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


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


3464
2017-08-04 04:37


起源

我知道“谷歌它”的答案并不是很好(因此这是一个评论),但寻找“红宝石拼写纠正”将是一个良好的开端。 - NullUserException
我确实实现了这一点,但在Asp.net MVC3中。我们使用了这里描述的算法 en.wikipedia.org/wiki/Levenshtein_distance。尝试在谷歌上搜索“模糊发现”。 - eldewall
Levenshtein距离:它永远不应该用于拼写检查。如果有人读到这个,它是最糟糕的拼写检查时期之一。 - Slater Victoroff


答案:


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

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

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


8
2017-09-04 18:45





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

我使用了类似的“你是说”的行为 语音分析仪,这适用于我的用例,位置名称,这不适用于所有用例....

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

所以你可以像这样使用REST api进行查询 (错误的伦敦): -

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

7
2017-08-25 16:01



有关在此处集成语音分析器的详细说明: blog.jessitron.com/2012/04/... - mahemoff


你可以使用模糊搜索:

"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


1
2018-01-21 07:58