ngram search
1.0.0
Perpustakaan ini memungkinkan pengindeksan banyak string ke dalam sebuah file, dan kemudian string pencocokan fuzzy secara efisien terhadap apa yang telah diindeks.
Saat ini, struktur dibangun dalam memori sebelum ditulis ke file, sehingga fase itu menggunakan banyak RAM.
Pencarian string dilakukan dari file dan membutuhkan sedikit memori.
Indeks adalah struktur trie di mana trigram dapat dilihat; Hasil untuk setiap trigram input dicocokkan dan diurutkan untuk mendapatkan string yang paling mirip.
Contoh (karat):
// Build index
let mut builder = Ngrams :: builder ( ) ;
builder . add ( "spam" , 0 ) ;
builder . add ( "ham" , 1 ) ;
builder . add ( "mam" , 2 ) ;
// Write it to a file
let mut file = BufWriter :: new ( File :: create ( path ) . unwrap ( ) ) ;
builder . write ( & mut file ) . unwrap ( ) ;
// Search our index
let mut data = Ngrams :: open ( path ) . unwrap ( ) ;
assert_eq ! (
data . search ( "ham" , 0.24 ) . unwrap ( ) ,
vec! [
( 1 , 1.0 ) , // "ham" is an exact match
( 2 , 0.25 ) , // "mam" is close
] ,
) ;
assert_eq ! (
data . search ( "spa" , 0.2 ) . unwrap ( ) ,
vec! [
( 0 , 0.375 ) , // "spam" is close
] ,
) ;Contoh (Python):
> >> from ngram_search import Ngrams
> >> ngrams = Ngrams ( path )
> >> ngrams . search ( "ham" , 0.24 )
[( 0 , 1.0 ), ( 2 , 0.25 )]
> >> ngrams . search ( "spa" , 0.2 )
[( 0 , 0.375 )]