trindex

package module
v0.0.0-...-702495e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 27, 2014 License: MIT Imports: 10 Imported by: 0

README

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).

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type IStorage

type IStorage interface {
	AddItem(trigram string, doc_id uint64)
	GetItems(trigram string) []uint64
	Close()
}

type Index

type Index struct {
	// contains filtered or unexported fields
}

func NewIndex

func NewIndex(filename string) *Index

func (*Index) Close

func (idx *Index) Close()

It's important to close the index to flush all writes to disk.

func (*Index) Insert

func (idx *Index) Insert(data string) uint64

Inserts a document to the index. It is safe for concurrent use.

func (*Index) Query

func (idx *Index) Query(query string, max_results int, skip float64) ResultSet

type Result

type Result struct {
	ID         uint64
	Similarity float64
	// contains filtered or unexported fields
}

func (*Result) String

func (r *Result) String() string

type ResultSet

type ResultSet []*Result

func (ResultSet) Len

func (rs ResultSet) Len() int

func (ResultSet) Less

func (rs ResultSet) Less(i, j int) bool

func (*ResultSet) Pop

func (rs *ResultSet) Pop() interface{}

func (*ResultSet) Push

func (rs *ResultSet) Push(x interface{})

func (ResultSet) Swap

func (rs ResultSet) Swap(i, j int)

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL