如何检测产品搜索中的拼写错误并建议可能的更正?

时间:2009-01-28 09:27:12

标签: algorithm validation search user-interface data-entry

鉴于一个非常大的产品名称数据库,您如何检测用户搜索中可能存在的拼写错误并建议可能的更正(有点像Google提供的那样)?

E.g。

用户输入“fork handels”并按“搜索”。

他们回来了

“没有结果。你的意思是'叉柄'吗?”

3 个答案:

答案 0 :(得分:14)

这个问题有几种方法:

  1. 在您的数据库中保留最受欢迎的拼写错误的表格。如果您需要一些常见的拼写错误:here
  2. 使用基于 edit distance 的算法:在信息论和计算机科学中,两个字符串之间的编辑距离是将其中一个字符转换为字符串所需的操作数。其他。有几种不同的算法可用于定义或计算此度量标准。例如,请阅读Wikipedia article for the Levenshtein algorithm
  3. 如果您使用Lucene进行全文搜索,here is a nice article会显示如何实现“您是不是真的”功能。
  4. 如果你看到这个功能是简单的拼写纠正,这里有一些很好的,非常短的几种语言的实现:How to Write a Spelling Corrector

答案 1 :(得分:3)

您可以使用phonetic algorithm,例如Soundex来查找听起来相似的匹配。

PostgreSQL有一个名为fuzzystrmatch的模块,其中的文档显示了使用Soundex,Levenshtein,Metaphone和Double Metaphone的示例。

答案 2 :(得分:1)

我确信我读到谷歌会保留用户在没有结果时重新输入的内容列表。您可以保留这些值的映射(例如,重新输入的字符串是否以相同的字母开头)。