8

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

例如

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

他们回来

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

4

3 回答 3

15

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

  1. 在数据库中保留一张最常见的拼写错误表。如果您需要一些常见的拼写错误:这里
  2. 使用基于编辑距离的算法:在信息论和计算机科学中,两个字符串之间的编辑距离是将其中一个字符串转换为另一个字符串所需的操作数。有几种不同的算法来定义或计算这个指标。例如,阅读有关Levenshtein 算法的 Wikipedia 文章
  3. 如果您使用 Lucene 进行全文搜索,这里有一篇很好的文章,它展示了如何实现“您的意思是”功能。
  4. 如果您将该功能视为简单的拼写校正,这里有一些不错的、非常简短的几种语言实现:如何编写拼写校正器
于 2009-01-28T09:43:19.147 回答
3

您可以使用语音算法(例如Soundex)来查找听起来相似的匹配项。

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

于 2009-01-28T09:37:49.393 回答
1

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

于 2009-01-28T09:40:15.393 回答