11 个不稳定版本 (3 个破坏性更新)
0.4.4 | 2019年10月6日 |
---|---|
0.4.3 | 2019年10月6日 |
0.3.0 | 2019年10月6日 |
0.2.4 | 2019年10月6日 |
0.1.0 | 2019年10月5日 |
#967 in 文本处理
5,483 每月下载次数
在 7 个 Crates 中使用 (5 直接)
13KB
216 代码行
trigram
这个 Rust crate 包含模糊字符串匹配的函数。
它导出两个函数。`similarity` 函数返回两个字符串的相似度,而 `find_words_iter` 函数返回一个匹配迭代器,用于在较大字符串(`haystack`)中查找较小字符串(`needle`)的匹配项。
字符串的相似度是基于它们的词元(即它们的3字符子串)计算的:[https://en.wikipedia.org/wiki/Trigram](https://en.wikipedia.org/wiki/Trigram)。
尝试一下
以下是运行示例的方法
$ cargo run --example similarity color colour
...
0.44444445
$ cargo run --example find_words_iter
bufalo
buffalow
Bungalo
biffalo
buffaloo
huffalo
snuffalo
fluffalo
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
trigram = "0.2.2"
并像这样调用它
use trigram::similarity;
fn main() {
println!("{}", similarity(&"rustacean", &"crustacean"));
}
背景
这个 crate 中的 `similarity` 函数是对 Postgresql pg_trgm 扩展中的 `similarity` 函数的反向工程近似:[https://postgresql.ac.cn/docs/9.1/pgtrgm.html](https://postgresql.ac.cn/docs/9.1/pgtrgm.html)。在许多情况下给出相同的答案,但在其他情况下可能不同意(尚无已知案例)。如果您发现答案不匹配的情况,请提交有关此问题的 issue!
Stack Overflow 上提供了对 Postgres 版本的良好介绍:[https://stackoverflow.com/a/43161051/484529](https://stackoverflow.com/a/43161051/484529)。
依赖关系
~2.2–3MB
~54K SLoC