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数据库实现

Download history 2/week @ 2024-04-21 1/week @ 2024-05-19 446/week @ 2024-06-09 58/week @ 2024-06-16 23/week @ 2024-06-30 35/week @ 2024-07-21 67/week @ 2024-07-28

每月下载 102

MIT 许可证

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