使用一个跨度查询作为查询背景,另一个查询作为真正的查询,从而圈定查询背景
Span Containing Query
组合多个跨度查询,并能指定那些查询结果(little)必须在什么情景(big)下出现
参数:
- little:要查询的语句,支持其他跨度查询
- big: 查询语句所处的大背景,little查询的结果必须是big的结果之一
说明:属于从大往小的查询,使用big子句区间的开始位置查询
示例
# containing 包含
# -----------------------------------------------
# Rose gives a lingering fragrance in the hand
# 1 2 3 4 5 6 7 8
# -----------------------------------------------
# big startPosition=4 endPosition=8 [4,8]
# little startPosition=5 endPosition=6 [5,6]
# 从 position=4 开始检索
POST /index_span/_search
{
"query": {
"span_containing": {
"big": {
"span_near": {
"clauses": [
{
"span_term": {
"user.desc": "lingering"
}
},
{
"span_term": {
"user.desc": "hand"
}
}
],
"slop": 5,
"in_order": true
}
},
"little": {
"span_near": {
"clauses": [
{
"span_term": {
"user.desc": "fragrance"
}
},
{
"span_term": {
"user.desc": "in"
}
}
],
"slop": 5,
"in_order": true
}
}
}
}
}
Span Whithin Query
使用方式与Span Containing Query 一样
区别:属于从小往大查询,使用little子句区间的开始位置查询
# whithin 包含
# -----------------------------------------------
# Rose gives a lingering fragrance in the hand
# 1 2 3 4 5 6 7 8
# -----------------------------------------------
# big startPosition=4 endPosition=8 [4,8]
# little startPosition=5 endPosition=6 [5,6]
# 从 position=5 开始检索
POST /index_span/_search
{
"query": {
"span_within": {
"big": {
"span_near": {
"clauses": [
{
"span_term": {
"user.desc": "lingering"
}
},
{
"span_term": {
"user.desc": "hand"
}
}
],
"slop": 5,
"in_order": true
}
},
"little": {
"span_near": {
"clauses": [
{
"span_term": {
"user.desc": "fragrance"
}
},
{
"span_term": {
"user.desc": "in"
}
}
],
"slop": 5,
"in_order": true
}
}
}
}
}