9个版本
使用旧的Rust 2015
0.4.0 | 2022年5月2日 |
---|---|
0.3.5 | 2022年2月4日 |
0.3.4 | 2021年12月28日 |
0.3.2 | 2020年8月18日 |
0.2.1 | 2017年11月6日 |
#599 in 文本处理
178 下载/每月
在 4 crates 中使用
38KB
583 行
本crate提供使用N-gram进行模糊搜索/字符串匹配。
此实现基于字符,而非基于单词,仅基于字符串相似度进行匹配。
MIT许可证下授权。
文档
https://docs.rs/ngrammatic/latest/ngrammatic/
安装
本crate发布在 crates.io。
要使用它,将以下内容添加到您的Cargo.toml中
[dependencies]
ngrammatic = "0.3.4"
使用方法
要进行模糊匹配,构建您的有效符号语料库,如下所示
use ngrammatic::{CorpusBuilder, Pad};
let mut corpus = CorpusBuilder::new()
.arity(2)
.pad_full(Pad::Auto)
.finish();
// Build up the list of known words
corpus.add_text("pie");
corpus.add_text("animal");
corpus.add_text("tomato");
corpus.add_text("seven");
corpus.add_text("carbon");
// Now we can try an unknown/misspelled word, and find a similar match
// in the corpus
let word = String::from("tomacco");
if let Some(top_result) = corpus.search(word, 0.25).first() {
if top_result.similarity > 0.99 {
println!("✔ {}", top_result.text);
} else {
println!("❓{} (did you mean {}? [{:.0}% match])",
word,
top_result.text,
top_result.similarity * 100.0);
}
} else {
println!("🗙 {}", word);
}