【问题标题】:Elastic Search - implement "Did you Mean"弹性搜索 - 实施“你的意思是”
【发布时间】:2011-10-19 15:48:33
【问题描述】:

我们正在尝试在 Rails 应用程序中使用 Elastic Search,并希望提供有关“您的意思是”功能实现的任何输入/代码示例。本质上,我们希望为最终用户提供一个选项来搜索替代查询,例如在 google 中。

【问题讨论】:

  • 我知道“google it”的答案不是很好(因此这是一个评论),但寻找“ruby 拼写更正”将是一个好的开始。
  • 我确实实现了这个,但是在 Asp.net MVC3 中。我们使用了这里描述的算法en.wikipedia.org/wiki/Levenshtein_distance。尝试在 Google 上搜索“模糊查找”。
  • Levenshtein 距离:它不应该用于拼写检查。万一有人读到这篇文章,这是最糟糕的拼写检查时期之一。

标签: ruby-on-rails elasticsearch


【解决方案1】:

从 0.90.0.Beta1 版本开始,ElasticSearch 包含一个“术语建议”功能,这正是您正在寻找的功能:

http://www.elasticsearch.org/guide/reference/api/search/term-suggest/

例如从此查询中获取:“开发分布式搜索引擎” 结果:“开发分布式搜索引擎”

【讨论】:

    【解决方案2】:

    Elasticsearch 还没有它,它作为 issue here 打开基本上它正在等待下一个 Lucene release

    我使用phonetic analyzers 实现了类似的“您的意思是”行为,它适用于我的用例、位置名称,但不适用于所有用例......

    一个示例映射:- https://gist.github.com/1171014

    所以您可以像这样使用 REST api 进行查询(拼写错误的 london):-

    {
      "query": {
        "field": {
          "nameSounds": "lundon"
        }
      }
    }
    

    【讨论】:

    【解决方案3】:

    你可以使用模糊搜索:

    "fuzzy" : {
        "user" : {
            "value" :         "Jon",
            "boost" :         1.0,
            "fuzziness" :     3,
            "prefix_length" : 0,
            "max_expansions": 100
        }
    }
    

    检查此链接是否模糊:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-fuzzy-query.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      • 2011-03-25
      • 1970-01-01
      • 2018-11-19
      • 1970-01-01
      相关资源
      最近更新 更多