10个版本
0.1.0 | 2024年6月14日 |
---|---|
0.0.9 | 2024年6月13日 |
0.0.6 | 2024年4月16日 |
0.0.5 | 2024年3月27日 |
0.0.2 | 2023年9月27日 |
#65 在 数据库实现
每月下载 102 次
40KB
1K SLoC
furze
用Rust编写的有限状态转换器(FST),参考了Lucene的FST实现。FST将所有术语存储在字节中,并重用术语索引的前缀和后缀,使其足够小以适应内存,减少存储空间,常用于搜索引擎、语音识别和自然语言搜索。
示例
use furze::Builder;
use furze::FST;
fn main() {
let mut b = Builder::new(vec![]);
b.add("cat".as_bytes(), 5);
b.add("dog".as_bytes(), 10);
b.add("deep".as_bytes(), 15);
b.add("logs".as_bytes(), 2);
b.finish();
let mut d = FST::load(b.get().to_vec());
let res = d.find("logs".as_bytes());
match res {
Ok(v) => {
println!("out:{}", v);
}
Err(e) => {
println!("error:{:?}", e);
}
}
}
终端
out:2
依赖关系
~0.4–0.8MB
~19K SLoC