鉴于一个短语查询仅仅排除了不包含确切查询短语的文档, 而 邻近查询 — 一个
slop
大于 0
— 的短语查询将查询词条的邻近度考虑到最终相关度 _score
中。 通过设置一个像 50
或者 100
这样的高 slop
值, 你能够排除单词距离太远的文档, 但是也给予了那些单词临近的的文档更高的分数。
下列对 quick dog
的邻近查询匹配了同时包含 quick
和 dog
的文档, 但是也给了与 quick 和 dog 更加临近的文档更高的分数 :
POST /my_index/my_type/_search
{
"query": {
"match_phrase": {
"title": {
"query": "quick dog",
"slop": 50 (1)
}
}
}
}
-
注意高
slop
值。
{
"hits": [
{
"_id": "3",
"_score": 0.75, (1)
"_source": {
"title": "The quick brown fox jumps over the quick dog"
}
},
{
"_id": "2",
"_score": 0.28347334, (2)
"_source": {
"title": "The quick brown fox jumps over the lazy dog"
}
}
]
}
-
分数较高因为
quick
和dog
很接近 -
分数较低因为
quick
和dog
分开较远