问题是通过单词分析以任意顺序对两个相邻单词进行短语搜索。
例如。在Sphinx extended syntax terms中,查询字符串可以写为WordToBeAnalyzed1 NEAR/1 WordToBeAnalyzed2
。然后,两个单词都将被分析,搜索引擎会找到“Word1 Word2”或“Word2 Word1”,其中两个单词都可以采用任何形式(例如“狐狸跳”,“跳狐狸”,“狐狸跳”等等) )。
阅读ES文档,我无法在ES查询DSL中表达相同的搜索。
当使用match_phrase
和slop
查询时,我可以使用"WordToBeAnalyzed1 WordToBeAnalyzed2"
参数向match same words in reverse order查询短语"slop": 2
。但是,它也将匹配“Word1 SlopWord1 Word2”和“Word1 SlopWord1 SlopWord2 Word2”之类的不良变体。
我还尝试将span_near
查询与in_order
参数一起使用,但是
如果有人可以向我指出解决此问题的方法,我将感到非常高兴。
最佳答案
首先通过对 _analyze
API的显式请求运行查询,然后再通过span_near
查询运行查询呢?
关于search - elasticsearch:以任意顺序短语短语搜索两个相邻单词(已分析),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25672490/