给定一个非常大的产品名称数据库,您如何检测用户搜索中可能存在的拼写错误并建议可能的更正(有点像谷歌呈现它们的方式)?
E.g.
用户输入“fork handels”并按“搜索”。
他们回来了
“没有结果。您是说‘叉柄’吗?”
解决这个问题有几种方法:
- 保留一张表最流行的拼写错误在你的数据库中。如果您需要一些常见的拼写错误:here http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines)
- 使用基于的算法编辑距离 http://en.wikipedia.org/wiki/Edit_distance:在信息论和计算机科学中,两个字符串之间的编辑距离是将其中一个字符串转换为另一个字符串所需的操作次数。有多种不同的算法来定义或计算此指标。阅读Levenshtein 算法的维基百科文章 http://en.wikipedia.org/wiki/Levenshtein_distance例如。
- 如果您使用 Lucene 进行全文搜索,这是一篇不错的文章 http://today.java.net/pub/a/today/2005/08/09/didyoumean.html?page=2它展示了如何实现“您是说吗”功能。
- 如果您将该功能视为简单的拼写纠正,那么这里有一些很好的、非常简短的几种语言的实现:如何编写拼写纠正器 http://www.norvig.com/spell-correct.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)