带有“你的意思是”的搜索引擎 [重复]

Posted

技术标签:

【中文标题】带有“你的意思是”的搜索引擎 [重复]【英文标题】:Search engine with 'did you mean' [duplicate] 【发布时间】:2011-03-25 19:58:11 【问题描述】:

可能重复:How does the Google “Did you mean?” Algorithm work?

我有一个包含大约 200 万条记录的数据库表。我正在使用 mysql 全文进行搜索,但用户经常输入坏词 ex gmes -> 应该是游戏,所以我需要一个带有 php 包装器的库,以便具有像谷歌“你是说”这样的功能我应该使用什么?

【问题讨论】:

问得好,但您应该先在 SO 上尝试搜索引擎,然后再提问;)How does the Google "Did you mean?" Algorithm work? 和 couple others 可能重复 【参考方案1】:

您可以使用像 Yahoo 的 Spelling Suggestion 这样的 API 作为完成它的任何简单方法,而无需自己动手。

【讨论】:

【参考方案2】:

索引是单词的列表,以及它们出现的位置。例如。游戏出现在第 123 行和第 456 行。如果您有这样一个包含所有单词的列表,您可以轻松搜索最匹配的单词。这样,您可以将 gmes 与游戏相匹配。

但是,这对于 MySQL 提供的索引是不可能的。

【讨论】:

【参考方案3】:

如果您不打算依赖 3rd 方网站,您肯定需要自己的字典和 levenshtein 算法来找出用户条目与字典术语的接近程度

【讨论】:

【参考方案4】:

如果您的查询非常通用,您可以使用 Yahoo Spelling API 等。但是,如果您有特定领域的词汇表,那么您最好使用Apache Solr。

你可以用它来索引你的 2MM 记录,很简单!并将其用作具有分面等功能的搜索服务器。它还会从您的记录中生成一个拼写检查索引,您可以将其用于“您的意思是”吗?或自动建议功能。由于其 RESTful API,它也非常容易集成到任何语言中

底线:如果您正在寻找一种长期解决方案,该解决方案除了拼写检查之外还可以处理多种事情,例如搜索/自动建议/分面等。Solr 是您的最佳选择。

【讨论】:

【参考方案5】:

另一个选项是PHP Pspell functions,尤其是pspell_suggest,但您需要在服务器上安装aspell library。

【讨论】:

以上是关于带有“你的意思是”的搜索引擎 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

Elasticsearch:创建一个简单的 “你的意思是?” 推荐搜索

弹性搜索 - 实施“你的意思是”

你如何实现“你的意思是”? [复制]

你如何实现“你的意思是”? [复制]

带有异常arrayBound的线性搜索错误[重复]

Python Pandas Regex:在列中搜索带有通配符的字符串并返回匹配项[重复]