弹性搜索 - 实现“你是不是意味着”

时间:2011-08-04 04:37:59

标签: ruby-on-rails elasticsearch

我们正在尝试在Rails应用程序中使用弹性搜索,并希望任何输入/代码示例实现“你的意思”功能。从本质上讲,我们希望为最终用户提供搜索google等备用查询的选项。

3 个答案:

答案 0 :(得分:8)

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

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

E.g。得到这个查询:“devloping distibutd saerch engies” 结果:“开发分布式搜索引擎”

答案 1 :(得分:7)

Elasticsearch尚未拥有它,它作为问题here打开,基本上它正在等待下一个Lucene release

我使用phonetic analyzers实现了类似的“你的意思”行为,它适用于我的用例,位置名称,这对所有用例都不起作用....

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

因此您可以使用REST api进行查询,例如(错误的伦敦): -

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

答案 2 :(得分:1)

您可以使用模糊搜索:

"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