Moh*_*ain 10 mysql full-text-search search-engine ruby-on-rails
你如何实现像谷歌在某些搜索查询中所说的"你的意思是:" 吗?
PS:我在我的产品中使用sphinx.你能建议我怎样才能实现这一点.对于具有此功能的其他搜索引擎的任何指南或建议都是最受欢迎的.我正在使用rails2.3.8,如果有帮助的话
一个解决方案可以是:
制作已知"关键字"或"短语"的字典,并在搜索操作中找不到任何内容,然后在该字典中运行辅助查询.每当创建可搜索条目时更新该字典,例如博客文章或用户名.
query ="supreman"
dictionary = ["superman","batman","hanuman"...](在DB表中)
搜索(查询)
如果没有结果,那么
在字典中搜索(其中"关键字"LIKE查询或"短语"LIKE查询)=>"超人"
检查sphinx或solr文档.他们可能会更好地实现此"Like"查询,该查询返回%匹配.
但重点是如何使其高效?
看看Damerau-Levenshtein距离算法.它计算两个字符串之间的"距离",并确定将一个字符串转换为另一个字符串所需的步数.两个琴弦越近,步数就越小.
该文章显示为MySQL存储功能实现的算法.
该算法比LIKE或SOUNDEX好得多.
我相信Google使用众包源数据而不是算法.即,如果用户键入abcd,单击后退按钮然后立即搜索abd,则会在用户对结果不满意时建立两个搜索项之间的关系.一旦您进行了非常大的社区搜索,就会出现该模式.
我认为您正在寻找字符串匹配算法。
我记得米斯拉夫的要点用于在初始化稍微拼写错误时引发错误。这可能是一本很好的读物。
另外,看看他建议的一些文章:
| 归档时间: |
|
| 查看次数: |
1610 次 |
| 最近记录: |