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).
- trindex: A trigram search library for Go [26th Oct 2014]