https://github.com/flosch/trindex
Trigram search library for Go
https://github.com/flosch/trindex
Last synced: over 1 year ago
JSON representation
Trigram search library for Go
- Host: GitHub
- URL: https://github.com/flosch/trindex
- Owner: flosch
- License: mit
- Created: 2014-10-25T22:20:32.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2014-10-27T18:35:29.000Z (over 11 years ago)
- Last Synced: 2025-03-18T06:51:33.426Z (over 1 year ago)
- Language: Go
- Homepage: https://www.florian-schlachter.de/trindex/
- Size: 206 KB
- Stars: 69
- Watchers: 7
- Forks: 6
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# trindex
[](https://godoc.org/github.com/flosch/trindex)
[](https://travis-ci.org/flosch/trindex)
[](https://gratipay.com/flosch/)
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`](https://github.com/flosch/trindex/tree/master/examples/wikidata).
```go
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
* [trindex: A trigram search library for Go](https://www.florian-schlachter.de/post/trindex/) [26th Oct 2014]