关于.net:是否有为C#编写的模糊搜索或字符串相似函数库?

关于.net:是否有为C#编写的模糊搜索或字符串相似函数库?

Are there any Fuzzy Search or String Similarity Functions libraries written for C#?

有类似的问题,但与我可以在源代码中使用的C#库无关。

感谢大家的帮助。

我已经看过Lucene了,但是我需要更简单的方法来搜索相似的字符串,并且没有索引部分的开销。

我标记的答案有两种非常简单的算法,一种也使用LINQ,因此非常完美。


Levenshtein距离实现:

  • 使用LINQ(不是真的,请参阅注释)
  • 不使用LINQ

我有一个.NET 1.1项目,在其中使用了后者。这很简单,但是完全可以满足我的需求。据我所知,它需要进行一些调整,但没有什么是显而易见的。


您还可以查看名为Sam的String Metrics的非常出色的库https://github.com/StefH/SimMetrics.Net。其中包括许多算法。

  • 汉明距离
  • 莱文施泰因距离
  • Needleman-Wunch距离或卖方算法
  • 史密斯-沃特曼距离
  • Gotoh距离或Smith-Waterman-Gotoh距离
  • 街区距离或L1距离或城市街区距离
  • Monge Elkan距离
  • Jaro距离度量
  • 杰罗·温克勒
  • SoundEx距离度量
  • 匹配系数
  • 骰子的系数
  • Jaccard相似度或Jaccard系数或Tanimoto系数
  • 重叠系数
  • 欧氏距离或L2距离
  • 余弦相似度
  • 变距
  • Hellinger距离或Bhattacharyya距离
  • 信息半径(詹森-香农散度)
  • 谐波均值
  • 斜散度
  • 混淆概率
  • Fellegi和Sunters(SFS)指标
  • TFIDF或TF / IDF
  • FastA
  • 冲击波
  • 最大匹配
  • 语法
  • Ukkonen算法

它们不是我自己的发明,但它们是我的最爱,我刚刚在博客上发表了他们的文章,并在博客文章《查找模糊字符串的四个函数》中发布了自己调整过的骰子系数,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库搜索和检索数据。也许对您的项目也可能有用。


推荐阅读

    linux输出字符串命令?

    linux输出字符串命令?,标准,基础,字符串,资料,简介,商业,数字,系统,命令,汉

    linux压缩搜索命令?

    linux压缩搜索命令?,系统,文件,工具,平台,电脑,命令,网络,管理,信息,时间,lin

    linux命令删除字符串?

    linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

    linux命令搜索命令行?

    linux命令搜索命令行?,工作,系统,地址,信息,命令,目录,基础,工具,管理,功能,l

    linux命令搜索进程?

    linux命令搜索进程?,系统,状态,软件,情况,进程,命令,代码,信息,数据,实时,如

    字符串查找命令linux?

    字符串查找命令linux?,系统,字符串,工具,信息,文件,命令,字符,选项,文本,范

    清空linux命令搜索?

    清空linux命令搜索?,软件,系统,情况,命令,增长,工具,号码,密码,名称,位置,如

    linux命令替换字符串?

    linux命令替换字符串?,字符串,文件,批量,首次,数据,命令,内容,方法,用字,结

    linux拼接字符串命令?

    linux拼接字符串命令?,系统,工作,代码,工具,名称,信息,地址,时间,数据,命令,l

    添加字符串命令linux?

    添加字符串命令linux?,情况,名称,文件,位置,名字,地方,连续,信息,命令,内容,L

    linux命令搜索大全?

    linux命令搜索大全?,地址,工作,系统,命令,管理,目录,标准,基础,工具,网络,lin

    linux搜索过去命令?

    linux搜索过去命令?,系统,信息,命令,名称,工作,预期,数字,地址,标准,服务,Lin

    linux命令搜索命令?

    linux命令搜索命令?,系统,位置,地址,标准,管理,信息,命令,名称,工作,文件,Lin

    linux命令查找字符串?

    linux命令查找字符串?,工具,信息,命令,字符串,系统,工作,文件,范本,样式,文

    linux日志搜索命令?

    linux日志搜索命令?,信息,系统,对比,工具,一致,日志,文件,命令,实时,网络,lin

    linux命令字符搜索?

    linux命令字符搜索?,系统,工具,命令,灵活,信息,工作,字符串,文本,文件,模式,l

    linux搜索筛选命令?

    linux搜索筛选命令?,系统,数字,电脑,盘后,盘中,工具,信息,文件,命令,字符,在l

    linux搜索日志的命令?

    linux搜索日志的命令?,实时,信息,系统,对比,最新,情况,日志,命令,地方,数据,

    linux全局搜索命令?

    linux全局搜索命令?,系统,工具,命令,灵活,信息,工作,字符串,文件,全局,字符,L

    linux命令搜索值高亮?

    linux命令搜索值高亮?,包装,网上,环境,命令,颜色,文件,语法,终端,界面,方法,l