是否有为 C# 编写的模糊搜索或字符串相似性函数库?[关闭]
-
01-07-2019 - |
题
有类似的问题,但不涉及我可以在源代码中使用的 C# 库。
感谢大家的帮助。
我已经见过 lucene,但我需要一些更容易搜索相似字符串并且没有索引部分开销的东西。
我标记的答案有两种非常简单的算法,其中一种也使用了 LINQ,所以它是完美的。
其他提示
您还可以查看名为 Sam's String Metrics 的非常令人印象深刻的库 http://sourceforge.net/projects/simmetrics/files/. 。这包括许多算法。
- 汉明距离
- 编辑距离
- Needleman-Wunch 距离或 Sellers 算法
- 史密斯-沃特曼距离
- Gotoh 距离或 Smith-Waterman-Gotoh 距离
- 街区距离或 L1 距离或城市街区距离
- 蒙日·埃尔坎距离
- Jaro 距离度量
- 贾罗·温克勒
- SoundEx 距离度量
- 匹配系数
- 骰子系数
- 杰卡德相似度或杰卡德系数或谷本系数
- 重叠系数
- 欧氏距离或 L2 距离
- 余弦相似度
- 变化距离
- Hellinger 距离或 Bhattacharyya 距离
- 信息半径(詹森-香农散度)
- 调和平均值
- 偏斜散度
- 混淆概率
- 牛头蛋白
- 费莱吉和桑特斯 (SFS) 指标
- TFIDF 或 TF/IDF
- 快A
- 爆炸P
- 最大匹配数
- q-gram
- 乌科宁算法
它们不是我自己的发明,但它们是我的最爱,我刚刚在博客中介绍了它们,并在一篇名为“Dice Coefficient”、“Levenshtein Distance”、“Longest Common Subsequence”和“Double Metaphone”的博客文章中发布了我自己的调整版本。 在 C# 扩展中查找模糊字符串匹配的四个函数.
你看过吗 Lucene.net?它是 Java Lucene 搜索引擎 API 到 .Net 平台的端口。该库提供了很多搜索功能。我大约一年前就尝试过它,所以不要将我的建议视为基于大量经验。我在书上看到过 Windows 开发者电动工具 并试驾了它。你可能会浏览他们的 API文档 看看它是否提供类似您正在寻找的模糊搜索之类的功能。
有以下 Levenshtein 距离算法,它为两个字符串的相似度分配一个值(实际上是差异),可以用来构建: http://www.merriampark.com/ldcsharp.htm
我使用过“C# 中的三元搜索树字典”(http://www.codeproject.com/KB/recipes/tst.aspx) 来搜索相似的字符串。
问候, 帕特里西奥