带有“你的意思是”的搜索引擎 [重复]
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。
【讨论】:
以上是关于带有“你的意思是”的搜索引擎 [重复]的主要内容,如果未能解决你的问题,请参考以下文章