C#学习教程:在C#中快速模糊搜索超过100k+字符串我正在寻找要复制的代码,而不是要安装的库。这是受以下问题的启发:是否有为C#编写的模糊搜索或字符串相似函数库?Levenstein距离算法似乎效果很好,但计算需要时间。当用户输入额外的字母时需要重新运行查询这一事实是否有任何优化?我有兴趣为每个输入显示最多前10个匹配项。您需要确定字符串周围的匹配规则。是什么决定了“相似的字符串”我已经做了很多字符串匹配算法,但没有找到符合我特定要求的任何现有库或代码。查看它们,借鉴它们的想法,但您始终需要自定义和编写自己的代码。Levenstein算法很好但有点慢。我在Smith-Waterman和Jaro-Winkler算法方面取得了一些成功,但我发现最好的是Monge(根据记忆)。然而,阅读原始研究并确定他们编写算法和目标数据集的原因是值得的。如果您没有正确定义要匹配的内容并对其进行衡量,您会发现意外匹配得分高,预期匹配得分低。字符串匹配是非常特定于域的。如果您没有正确定义您的域名,那么您就像一个毫无头绪的渔夫,抛出鱼钩并希望获得最好的结果。这篇博文描述了Lucene在这方面的一些工作。他们能够使用编码距离为2的有限状态传感器(自动机)非常有效地实现Levenshtein距离模糊匹配。虽然它是开源的,但代码都是用Java编写的,有点复杂。但基本思想很简单:将您的字典想象成一棵字母状态的巨树。在state0中,你没有字母。在状态1中,您承认任何可能是单词首字母的字母。State2受state1限制;如果第一个字母是“x”,则下一个状态只允许x之后的字母(位置2)。等。现在对于Levenshtein匹配,您遍历字母树,同时允许一些错误:删除、插入(单字母通配符)和可能的换位(Levenshtein的一个很好的扩展是将换位视为单个编辑而不是2)。您必须维护状态以跟踪允许的编辑次数。这可以非常有效地完成-当然足够快以与“键入时的拼写建议”进行交互。以上就是C#学习教程:C#中100k+以上字符串的快速动态模糊搜索。分享的所有内容,如果对大家有用,还需要了解更多C#学习教程,希望大家多多关注~本文来自网络收藏,不代表立场,如涉及侵权,敬请谅解点击右侧联系管理员删除。如需转载请注明出处:
