我在ASP.NET MVC应用程序上有一个网页,客户可以在其中搜索供应商.供应商在网站上捕获他们自己的详细信息.客户想要一个“智能搜索”功能,即使供应商拼写与搜索框中输入的内容“略有不同”,他们也可以搜索供应商并找到它们.
我不知道客户的“略有不同”的概念是什么.我一直在研究实现自定义soundex算法.这会根据声音的方式将单词转换为数字.然后将该数字用于比较.
例如:
Zach
Zack
将编码为相同的值.还有其他我可以考虑的选择吗?
解决方法
您可以将
Levenshtein distance与数据库中供应商的“标签”字段结合使用,以实现“智能搜索”样式功能.
它非常基本,但适用于’Zack / Zach’等情况.
通过在数据库中添加标签,您可以处理人们可以通过其首字母缩略词或其他口语名称搜索供应商的情况.
有关实施细节,请参见How to calculate distance similarity measure of given 2 strings?和http://www.dotnetperls.com/levenshtein.