Skip to content

flosch/trindex

Repository files navigation

trindex

GoDoc Build Status gratipay

trindex is a trigram search library for terms written for and in Go (in alpha stage!). It provides a very simple API and ships with its own database.

I put up a demo page online using trindex. I indexed all German wikidata lemmas (4064962 titles in total) and made them available for search: https://www.florian-schlachter.de/trindex/

The Wikidata example (build & query) is in the repository as well: examples/wikidata.

idx := trindex.NewIndex("trindex.db")
defer idx.Close()

dataset := []string{
    "Mallorca", "Ibiza", "Menorca", "Pityusen", "Formentera", 
    "Berlin", "New York", "Yorkshire",
}

for _, data := range dataset {
    id := idx.Insert(data)
    // Use ID to connect the term with the associated dataset;
    // for example save the ID in your SQL database about travel destinations
}

results := idx.Query("malorka", 3, 0.3)

// Returns a sorted list of 3 results including the ID and
// a confidence number ("Similarity"; 1 = best match) >= 0.3 

trindex relies heavily on caching; it's API is safe for concurrent use. Please make sure that you'll call idx.Close() in any case on application shutdown (to flush inserted data to disk).

Related blog posts

Releases

No releases published

Packages

No packages published

Languages