【问题标题】:Boolean search fuzzy query for Elasticsearch - Unexpected result - "Word1" AND "Word2" ~3Elasticsearch 的布尔搜索模糊查询 - 意外结果 - "Word1" AND "Word2" ~3
【发布时间】:2017-12-26 22:59:13
【问题描述】:

我在 Elasticsearch 应用程序中使用搜索字符串 '"Word1" AND "Word2" ~3',但得到的结果出乎我的意料。

它正在返回诸如“Word1 blah blah Word1”之类的结果。我实际上只希望它返回“Word1 blah blah Word2”的结果,而不是重复出现的“Word1”。

在实验中,似乎“Word1 Word2”~3'给出了我正在寻找的实际结果。

是否有人能够帮助我理解这个逻辑,为什么第一次搜索没有按预期工作,以及我正在做的事情是否有更好的方法?

【问题讨论】:

    标签: elasticsearch search boolean logic fuzzy


    【解决方案1】:

    在您的第一个查询"Word1" AND "Word2" ~3 中,模糊性仅应用于Word2。查询基本上是这样的:查找所有包含“Word1”和“Word2”且编辑距离为 3 的文档。因此,带有Word1 blah blah Word1 的文档将符合条件,因为“Word1”的第一次匹配和第二次匹配也是因为它与“Word 2”的编辑距离为 1

    在您的第二个查询"Word1 Word2" ~3 中,您正在执行proximity search,即这是一个短语查询,您可以在其中允许“Word1”和“Word2”彼此相距更远。

    【讨论】:

    • 谢谢。我认为这可以解释。不过我感觉你说的有些自相矛盾。你能检查/解释吗? “模糊性仅适用于 Word2” - 情况似乎并非如此,因为您稍后谈到“Word1 blah blah Word1”。 “~3”似乎同时适用于“Word1”和“Word2”。但是,您的解释对我有很大帮助,这很有意义并解释了我所看到的。非常感谢。只是认为如果有机会清理解释,可能需要进行少量编辑,因为它非常有用。谢谢
    • 不,在第一个查询中您有AND,这意味着模糊性仅适用于Word2。在您的第二个查询中,单词和双引号都包含在双引号中,这意味着它是一个短语,因此模糊性适用于该短语。
    猜你喜欢
    • 2020-06-15
    • 1970-01-01
    • 2019-11-29
    • 1970-01-01
    • 2019-04-06
    • 2014-08-13
    • 2021-08-09
    • 2015-06-21
    • 1970-01-01
    相关资源
    最近更新 更多