5个版本

0.2.2 2024年2月15日
0.2.1 2024年2月3日
0.2.0 2024年2月2日
0.1.1 2024年2月1日
0.1.0 2024年2月1日

#151 in 文本编辑器

MIT许可

22KB
286

代码模糊匹配

crates.io docs.rs

Visual Studio Code启发的模糊字符串匹配。

该crate中使用的模糊匹配算法针对命令面板、快速文件导航和代码搜索等用例进行了优化。它不使用Levenshtein距离,后者更适合拼写检查等用例。

该算法只允许查询字符串中的字符与目标字符串中的字符顺序一致时进行匹配。所有查询都是子字符串查询,因此在目标字符串中间搜索一个术语对匹配分数的影响不大。该算法优先考虑在目标字符串单词开头处的匹配,将单词视为代码中可能出现的单词(分隔符后的字母或驼峰式大小写字母被视为单词)。顺序匹配也受到青睐。

示例用法

let mut matcher = code_fuzzy_match::FuzzyMatcher::new();
let matches = matcher.fuzzy_match("the quick brown fox", "bro fox");
assert!(matches.is_some());
let no_match = matcher.fuzzy_match("the quick brown fox", "cat");
assert!(no_match.is_none());

let high_score = matcher.fuzzy_match("Example string", "example");
let lower_score = matcher.fuzzy_match("Example string", "str");
assert!(high_score.unwrap() > lower_score.unwrap());

无运行时依赖