Are there any Fuzzy Search or String Similarity Functions libraries written for C#?有类似的问题,但与我可以在源代码中使用的C#库无关。 感谢大家的帮助。 我已经看过Lucene了,但是我需要更简单的方法来搜索相似的字符串,并且没有索引部分的开销。 我标记的答案有两种非常简单的算法,一种也使用LINQ,因此非常完美。 Levenshtein距离实现:
我有一个.NET 1.1项目,在其中使用了后者。这很简单,但是完全可以满足我的需求。据我所知,它需要进行一些调整,但没有什么是显而易见的。 您还可以查看名为Sam的String Metrics的非常出色的库https://github.com/StefH/SimMetrics.Net。其中包括许多算法。
它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发表了他们的文章,并在博客文章《查找模糊字符串的四个函数》中发布了自己调整过的骰子系数,Levenshtein距离,最长公共子序列和Double Metaphone的版本。与C#扩展名匹配。 您看过Lucene.net吗?它是Java Lucene搜索引擎API到.Net平台的端口。该库提供了很多搜索功能。我大约一年前就玩过它,所以不要以大量经验为依据接受我的建议。我在《 Windows Developer Power Tools》一书中看到了它,并进行了测试。您可能会浏览他们的API文档,以查看是否提供了所需的类似模糊搜索的内容。 可以使用以下Levenshtein距离算法为两个字符串的相似度(实际上是差异)分配一个值,该值可以用于以下内容:http://www.merriampark.com/ldcsharp.htm 此代码项目论文使用Levenshtein距离具有字符串相似性函数。 我已经使用" C#中的三元搜索树字典"(http://www.codeproject.com/KB/recipes/tst.aspx)来搜索相似的字符串。 问候,帕特里西奥 适用于Linux的Beagle项目是用c#(单声道)编写的,是类似于Google桌面的搜索工具。那里可能有一些用于此类字符串匹配的代码。 如果我没记错的话,它使用Lucene库搜索和检索数据。也许对您的项目也可能有用。 |