【问题标题】:How to detect a typo in a product search and suggest possible corrections?如何检测产品搜索中的拼写错误并提出可能的更正建议?
【发布时间】:2010-10-03 23:22:03
【问题描述】:

鉴于产品名称的数据库非常庞大,您将如何检测用户搜索中可能存在的拼写错误并提出可能的更正建议(有点像 Google 呈现它们的方式)?

例如

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

他们回来了

“没有结果。你是说‘叉柄’吗?”

【问题讨论】:

  • 一开始我确实输入了那个,但认为它可能有点模糊了这个问题:)

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


【解决方案1】:

有几种方法可以解决这个问题:

  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

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 这是个好主意,尽管我怀疑它可能对 Google 有用,部分原因在于他们处理的请求数量之多令人难以置信。流量较低的网站可能难以构建有用大小的数据库。
    猜你喜欢
    • 2012-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-25
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    相关资源
    最近更新 更多