Насколько документы соответствуют запросу, нет никакой разницы. Разница в том, какой диапазон соответствует.
- span_contents, содержащий большие.
- span_within соответствует немного.
Запрос получит повышение от соответствующего диапазона, поэтому span_conisting получит увеличение от большого, а span_within получит повышение от соответствующего небольшого.
Разница также становится уместной, если ваш span_within или span_conisting является частью другого запроса span, который учитывает позицию совпадающего span.
Например, допустим, у вас есть текст:
Lorem Ipsum Dolor Sit Amet, Concetetur Adipiscing Elit.
И ваш span_conisting / inside соответствует первым пяти терминам, с небольшим соответствием "ipsum". Если вы затем оберните его в span_near, то этот внешний span_near будет взят из границ big для span_conisting и из little ("ipsum") для span_within.
Расстояние между "amet" (конец большого) и "consectetur" составляет ≤1, поэтому будет соответствовать тексту:
"span_near": {
"clauses": [
"span_containing" : {
"little" : {
"span_term" : { "field" : "ipsum" }
},
"big" : {
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "lorem" } },
{ "span_term" : { "field" : "amet" } }
],
"slop" : 5,
"in_order" : true
}
}
},
{ "span_term" : { "field" : "consectetur" } }
],
"slop": 1,
"in_order": true
}
Но расстояние между "ipsum" и "contectetur" составляет> 1, поэтому это не будет :
"span_near": {
"clauses": [
"span_within" : {
"little" : {
"span_term" : { "field" : "ipsum" }
},
"big" : {
"span_near" : {
"clauses" : [
{ "span_term" : { "field" : "lorem" } },
{ "span_term" : { "field" : "amet" } }
],
"slop" : 5,
"in_order" : true
}
}
},
{ "span_term" : { "field" : "consectetur" } }
],
"slop": 1,
"in_order": true
}