问题是通过单词分析以任意顺序搜索两个相邻单词。
E.g。在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
参数一起使用,但
span queries are term-level queries, so they have no analysis phase
如果有人能指出我解决这个问题的方法,我会很高兴。
答案 0 :(得分:2)
首先通过对_analyze
API的显式请求运行查询,然后执行span_near
查询?
答案 1 :(得分:0)
这将起作用。
{
"query":{
"bool":{
"must":[
{
"query_string":{
"query":"*hello* *there*",
"fields":[
"subject"
],
"default_operator":"and",
}
}]
}
}
}