ngram search
1.0.0
ไลบรารีนี้อนุญาตให้จัดทำดัชนีหลายสตริงลงในไฟล์แล้วสตริงการจับคู่แบบฟัซซี่อย่างมีประสิทธิภาพกับสิ่งที่ได้รับการจัดทำดัชนี
ปัจจุบันโครงสร้างถูกสร้างขึ้นในหน่วยความจำก่อนที่จะเขียนลงในไฟล์ดังนั้นเฟสนั้นใช้ RAM จำนวนมาก
การค้นหาสตริงทำจากไฟล์และต้องใช้หน่วยความจำเล็กน้อย
ดัชนีเป็นโครงสร้าง Trie ที่สามารถค้นหา trigrams ได้ ผลลัพธ์สำหรับ trigrams แต่ละรายการของอินพุตจะถูกจับคู่และเรียงลำดับเพื่อให้ได้สตริงที่คล้ายกันมากที่สุด
ตัวอย่าง (สนิม):
// 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
] ,
) ;ตัวอย่าง (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 )]