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

例如。

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

他们回来了

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

有帮助吗?

解决方案

有几种方法对于这个问题:

  1. 保持桌的 最受欢迎的拼写错误 在你的数据库。如果你需要一些共同的拼写错误: 在这里,)
  2. 使用算法的基础上 编辑距离:信息理论和计算机科学、编辑之间的距离两个字符串数量的行动需要转变他们中的一个成。有几种不同的算法以界定或计算这一指标。阅读 维基百科文Levenshtein算法 例如。
  3. 如果您使用的分类:设全文搜索, 这里是一个很好的文章 这显示出如何实施的"有没有你的意思是"特征。
  4. 如果你看到的功能,因为简单的咒语的修正,这里有一些漂亮,非常简短的实现方式中的几种语言: 如何写的拼写校正器

其他提示

你可以使用 语音算法, , 例如 声音指数 找到听起来相似的匹配项。

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

我敢肯定,我读了谷歌会保留用户retypes列表时,他们得不到任何结果。你可以保留这些值的映射(说,如果重新输入字符串以相同字母开头)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top