Elasticsearch 的布尔搜索模糊查询 - 意外结果 - "Word1" AND "Word2" ~3

Boolean search fuzzy query for Elasticsearch - Unexpected result - "Word1" AND "Word2" ~3

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

它是 returning 结果,例如 "Word1 blah blah Word1"。我实际上只希望 return 结果 "Word1 blah blah Word2",而不是 "Word1".

的重复出现

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

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

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

的编辑距离为 1

在您的第二个查询 "Word1 Word2" ~3 中,您正在执行 proximity search,即它是一个短语查询,其中您允许 "Word1" 和 "Word2" 进一步彼此分开。