假设您有两个多字短语,一个是"快速狐狸"另一个是"懒惰的棕色"。
目标是在短语内具有0斜率并且在短语之间具有> 0斜率。这样的"快速狐狸"和"懒惰的棕色"在两个短语中没有任何额外的单词匹配,但两个短语之间可能有多个单词。
以下内容应该匹配:
但这些不会:
有什么想法吗?我一直在尝试使用span_near和span_multi,但还没有到达任何地方。
答案 0 :(得分:0)
您要找的是短语查询。短语查询将确保只有单词保持相邻,然后匹配发生。也就是说,它只能容忍0的斜率。
{
"query": {
"bool": {
"must": [
{
"match_phrase": {
"text": "quick fox"
}
},
{
"match_phrase": {
"text": "lazy brown"
}
}
]
}
}
}
短语查询 - http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/phrase-matching.html
答案 1 :(得分:-2)
免责声明:我刚才从未听说过Elasticsearch,并且在谷歌5分钟后得出了这个答案。
看起来不太可能为查询的字符串指定最小 slop值(虽然我可能错过了一些东西),这使得你的要求:“> 0 slop在短语之间“有点棘手。但是,这个简单的技巧可以解决您的问题:
{
"bool": {
"must": { "match": "quick fox"},
"must": { "match": "lazy brown"},
"must_not": { "match": "quick fox lazy brown"}
}
}