越近越好
鉴于一个短语查询仅仅排除了不包含确切查询短语的文档, 而 邻近查询 — 一个
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>
}
}
}
}
<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"
}
}
]
}
<1> 分数较高因为 quick
和 dog
很接近
<2> 分数较低因为 quick
和 dog
分开较远