在工作中,我们经常需要从与其他输入字符串最匹配的字符串列表中查找字符串.目前,我们正在使用Needleman-Wunsch算法.该算法通常会返回大量误报(如果我们将最小分数设置得太低),有时候它应该找不到匹配(当最小分数太高时),并且大多数时候,我们需要手工检查结果.我们认为我们应该尝试其他替代品.
您对算法有任何经验吗?你知道算法如何相互比较吗?
我真的很感激一些建议.
PS:我们用C#编码,但你不应该关心它 - 我一般都在询问算法.
哦,对不起,我忘记提及了.
不,我们不是用它来匹配重复数据.我们有一个我们正在寻找的字符串列表 - 我们称之为搜索列表.然后我们需要处理来自各种来源的文本(如RSS提要,网站,论坛等) - 我们提取这些文本的一部分(有完整的规则集,但这是无关紧要的)我们需要匹配那些反对搜索列表的人.如果字符串匹配search-list中的一个字符串 - 我们需要对事物进行一些进一步的处理(这也是无关紧要的).
我们无法执行正常的比较,因为从外部源提取的字符串,大多数时候,包括一些额外的单词等.
无论如何,它不是重复检测.
你能建议一些轻量级模糊文本搜索库吗?
我想要做的是允许用户使用拼写错误找到搜索字词的正确数据.
我可以使用像Lucene这样的全文搜索引擎,但我认为这是一种过度杀伤力.
编辑:
为了使问题更清楚,这里是该库的主要场景:
我有一个很大的字符串列表.我希望能够在此列表中搜索(类似于MSVS的intellisense)但是应该可以通过字符串过滤此列表,该字符串不存在于其中,但足够接近列表中的某个字符串.
例:
当我在文本框中输入'Gren'或'Geen'时,我想在结果集中看到'Green'.
索引数据的主要语言是英语.
我认为Lucene对于这项任务非常重要.
更新:
我找到了一个符合我要求的产品.这是ShuffleText.
你知道其他选择吗?