有类似的问题,但不是我可以在源代码中使用的C#库。
谢谢大家的帮助。
我已经看过lucene,但我需要更容易搜索类似字符串的东西,而且没有索引部分的开销。
我标记的答案有两个非常简单的算法,一个也使用LINQ,所以它很完美。
答案 0 :(得分:31)
Levenshtein距离实施:
我有一个.NET 1.1项目,我使用后者。它很简单,但完全符合我的需要。从我记得它需要一些调整,但没有什么是不明显的。
答案 1 :(得分:28)
你还可以看一下名为Sam's String Metrics http://sourceforge.net/projects/simmetrics/files/的令人印象深刻的图书馆。这包括许多算法。
答案 2 :(得分:12)
它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发表了关于它们的文章并在一篇名为{{3的博客文章中发表了我自己的调整版Dice Coefficient,Levenshtein Distance,Longest Common Subsequence和Double Metaphone }}
答案 3 :(得分:2)
你看过Lucene.net了吗?它是.Net平台的Java Lucene搜索引擎API的一个端口。该库提供了大量搜索功能。我大约一年前玩过它,所以不要基于大量的经验来接受我的建议。我在 Windows Developer Power Tools 一书中看到了它并将其用于试驾。您可以查看他们的API documentation,看看它是否提供了您正在寻找的模糊搜索。
答案 4 :(得分:1)
此code project paper使用Levenshtein distance具有字符串相似度函数。
答案 5 :(得分:1)
有以下Levenshtein距离算法,它为两个字符串(实际上是差异)的相似性赋值,可用于构建:http://www.merriampark.com/ldcsharp.htm
答案 6 :(得分:0)
Linux的Beagle Project是用c#(单声道)编写的,是一款像搜索工具一样的google-desktop。它可能有一些代码用于这种字符串匹配。
如果我没记错的话,它使用Lucene库来搜索和检索数据。也许这对你的项目也很有用。
答案 7 :(得分:0)
我使用了“C#中的三元搜索树词典”(http://www.codeproject.com/KB/recipes/tst.aspx)来搜索类似的字符串。
此致,Patricio