实现智能搜索/模糊字符串比较

本文关键字:字符串 比较 模糊 智能 搜索 实现 | 更新日期: 2023-09-27 18:15:00

我有一个ASP网页。NET MVC应用程序,其中客户搜索供应商。供应商在网站上获取自己的详细信息。客户需要一个"智能搜索"。功能,他们可以搜索供应商并找到他们,即使供应商拼写"略有不同";到在搜索框中输入的内容

我不知道客户对"略有不同"的概念是什么。是多少。我一直在考虑实现一个自定义soundex算法。它根据单词的读音将其转换为数字。然后使用该数字进行比较。

例如:

扎克

扎克

将编码为相同的值。还有其他的选择吗?

实现智能搜索/模糊字符串比较

您可以使用Levenshtein距离结合'tags'字段在您的数据库中的供应商'智能搜索'风格的功能。

这是非常基本的,但适用于'Zack/Zach'等情况。

在数据库中添加标签可以让您处理人们可能通过缩略词或其他口语化名称搜索供应商的情况。

参见如何计算给定2个字符串的距离相似度量?和http://www.dotnetperls.com/levenshtein查看实现细节。

你需要的是一个带语音分析过滤器的索引搜索。

Lucene。. NET提供了这样的功能。

http://lucene.apache.org/core/4_0_0/analyzers-phonetic/org/apache/lucene/analysis/phonetic/PhoneticFilterFactory.html

如何在Lucene.net中进行语音和近似搜索

查看。net版本的Phonetix:
http://sourceforge.net/projects/phonetixnet/

这里有一些关于如何在c#中实现它的更多信息:
Lucene.net语音过滤器

你也可以使用BeiderMorseEncoder,它被设计成可以处理多种语言。

关于寻找拼写相似的单词,为什么不使用模糊搜索呢?
如何在Lucene.net中做模糊搜索?
Lucene.net模糊短语搜索

还有很多字符串度量函数,你可以通过CLR-Stored-Procedure使用:http://anastasiosyal.com/post/2009/01/11/Beyond-SoundEx-Functions-for-Fuzzy-Searching-in-MS-SQL-Server