一个 Swift 包,包含使用 Smith-Waterman 算法的修改版本执行模糊搜索的实用工具。此实现是从 Rúnar Bjarnason 实现的 Haskell 版本 移植而来。
此包包含两个核心函数:bestMatch
和 fuzzyFind
。
使用 bestMatch
,您可以查找查询在单个字符串中的最佳对齐方式(如果可能进行任何对齐)
import FuzzyFind
let alignment = bestMatch(query: "ff", input: "FuzzyFind") // Matches
let noAlignment = bestMatch(query: "ww", input: "FuzzyFind") // Not possible to find a match, returns nil
使用 fuzzyFind
,您可以对多个输入运行多个查询,并获取与所有提供的查询匹配的输入的所有对齐方式。对齐方式将以数组形式提供,并按其得分排序;得分越高意味着对齐效果越好。
import FuzzyFind
let allAlignments = fuzzyFind(queries: ["dad", "mac", "dam"], inputs: ["red macadamia", "Madam Card"])
您可以通过在对齐方式上调用 highlight()
来可视化匹配的对齐方式
let alignment = bestMatch(query: "ff", input: "FuzzyFind")!
print(alignment.highlight())
这将打印
FuzzyFind
* *