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