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 文本处理

Download history 1573/week @ 2024-03-14 1314/week @ 2024-03-21 1267/week @ 2024-03-28 1484/week @ 2024-04-04 1769/week @ 2024-04-11 1655/week @ 2024-04-18 1602/week @ 2024-04-25 685/week @ 2024-05-02 1112/week @ 2024-05-09 1448/week @ 2024-05-16 848/week @ 2024-05-23 1072/week @ 2024-05-30 1109/week @ 2024-06-06 1365/week @ 2024-06-13 1434/week @ 2024-06-20 1340/week @ 2024-06-27

5,483 每月下载次数
7 个 Crates 中使用 (5 直接)

Apache-2.0

13KB
216 代码行

trigram

Build Status License Documentation

这个 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