#ngrams #index #indexing #text-search #full-text #write-file #binary-file

bin+lib ngram-search

基于ngram的字符串到二进制文件的索引

2个版本

0.1.1 2020年9月1日
0.1.0 2020年9月1日

#1491 in 数据库接口

MIT许可证

19KB
380

此crate允许将多个字符串索引到文件中,然后高效地模糊匹配字符串与已索引的内容。

目前,结构是在写入文件之前在内存中构建的,因此该阶段会消耗大量RAM。

字符串搜索是从文件中进行的,需要很少的内存。

索引是一个trie结构,在其中可以查找三元组;匹配并排序每个输入三元组的结果,以获取最相似的字符串。

示例

// 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.22222222), // "spam" is close
    ],
);

依赖项

~0.7–1.1MB
~43K SLoC