ngram search
1.0.0
Esta biblioteca permite indexar muchas cadenas en un archivo, y luego las cadenas de combinación de manera eficiente contra lo que se ha indexado.
Actualmente, la estructura se construye en la memoria antes de ser escrita en el archivo, de modo que la fase usa una gran cantidad de RAM.
La búsqueda de cadenas se realiza desde el archivo y requiere poca memoria.
El índice es una estructura trie en la que se pueden buscar trigramas; Los resultados para cada trigramas de la entrada coinciden y se clasifican para obtener las cadenas más similares.
Ejemplo (óxido):
// 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
] ,
) ;Ejemplo (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 )]