有类似的问题,但与我可以在源代码中使用的 C# 库无关。
感谢大家的帮助。
我已经看到了 lucene,但是我需要一些更容易搜索类似字符串并且没有索引部分开销的东西。
我标记的答案有两个非常简单的算法,一个也使用LINQ,所以它很完美。
有类似的问题,但与我可以在源代码中使用的 C# 库无关。
感谢大家的帮助。
我已经看到了 lucene,但是我需要一些更容易搜索类似字符串并且没有索引部分开销的东西。
我标记的答案有两个非常简单的算法,一个也使用LINQ,所以它很完美。
您还可以查看名为 Sam's String Metrics 的令人印象深刻的库https://github.com/StefH/SimMetrics.Net。这包括许多算法。
它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发布了关于它们的博客,并在名为“查找模糊字符串的四个函数”的博客文章中发布了我自己的 Dice Coefficient、Levenshtein Distance、Longest Common Subsequence 和 Double Metaphone 的调整版本C# Extensions 中的匹配项。
你看过Lucene.net吗?它是 Java Lucene 搜索引擎 API 到 .Net 平台的一个端口。该库提供了很多搜索功能。大约一年前我玩过它,所以不要将我的建议视为基于大量经验。我在Windows Developer Power Tools一书中看到了它,并将其用于试驾。您可以查看他们的API 文档,看看它是否提供了您正在寻找的模糊搜索之类的东西。
此代码项目论文具有使用Levenshtein distance的字符串相似度函数。
有以下 Levenshtein 距离算法,它为两个字符串的相似性分配一个值(实际上是差异),可用于构建:http ://www.merriampark.com/ldcsharp.htm
Beagle Project for Linux 是用 c# (mono) 编写的,是一个类似于 google-desktop 的搜索工具。它可能有一些用于这些字符串匹配的代码。
如果我没记错的话,它使用Lucene库来搜索和检索数据。也许这对您的项目也有用。
我使用“C# 中的三元搜索树字典”(http://www.codeproject.com/KB/recipes/tst.aspx)来搜索类似的字符串。
问候,帕特里西奥