我在ASP.NET MVC应用程序上有一个网页,客户在该网页上搜索供应商。供应商在网站上捕获他们自己的详细信息。客户希望进行智能搜索"功能,他们可以搜索供应商并找到他们,即使供应商拼写是"略有不同"到搜索框中键入的内容。
我不知道客户的概念是什么"略有不同"是。我一直在研究实现自定义soundex算法。这会根据声音的方式将单词转换为数字。然后将该数字用于比较。
例如:
扎克
扎克
将编码为相同的值。还有其他我可以研究的选择吗?
答案 0 :(得分:7)
您可以将Levenshtein distance与“'标记”结合使用。数据库中供应商的字段,用于智能搜索'风格功能。
这是非常基本的,但适用于诸如Zack / Zach'
等案件。在数据库中添加标签可以处理人们按首字母缩略词或其他俗名搜索供应商的情况。
有关实施详情,请参阅How to calculate distance similarity measure of given 2 strings?和http://www.dotnetperls.com/levenshtein。
答案 1 :(得分:6)
您需要的是使用语音分析过滤器进行索引搜索。
Lucene.NET就是这么做的。
How to perform Phonetic and Aproximative search in Lucene.net
请参阅此处了解Phonetix的.NET版本:
http://sourceforge.net/projects/phonetixnet/
这里有一些关于如何在C#中实现它的信息:
lucene.net phonetic filter
您还可以使用旨在处理BeiderMorseEncoder的many languages。
关于找到类似拼写单词的主题,为什么不使用模糊搜索呢?
how to do fuzzy search in Lucene.net in asp.net?
Lucene.net Fuzzy Phrase Search
还有很多字符串度量函数可以通过CLR-Stored-Procedure使用: http://anastasiosyal.com/post/2009/01/11/Beyond-SoundEx-Functions-for-Fuzzy-Searching-in-MS-SQL-Server