elasticsearch 在elasticsearch中,包含span_和查询内span_之间有什么区别?,elasticsearch,lucene,search-engine,querydsl,elasticsearch,Lucene,Search Engine,Querydsl" /> elasticsearch 在elasticsearch中,包含span_和查询内span_之间有什么区别?,elasticsearch,lucene,search-engine,querydsl,elasticsearch,Lucene,Search Engine,Querydsl" />

elasticsearch 在elasticsearch中,包含span_和查询内span_之间有什么区别?

elasticsearch 在elasticsearch中,包含span_和查询内span_之间有什么区别?,elasticsearch,lucene,search-engine,querydsl,elasticsearch,Lucene,Search Engine,Querydsl,文件上说 span_包含: 大子句和小子句可以是任何跨度类型的查询。匹配跨距 从大到小包含匹配项的将被返回 span_在以下范围内: 大子句和小子句可以是任何跨度类型的查询。匹配跨距 从小到大,从大到小 至于查询匹配了哪些文档,没有区别。不同之处在于匹配的跨度 span_包含大的匹配项 span_内的匹配很少 查询将从匹配的span中获得提升,因此span\u containing将从big中获得提升,而span\u in将从匹配的little中获得提升 如果您的span_in或span_c

文件上说

span_包含:

大子句和小子句可以是任何跨度类型的查询。匹配跨距 从大到小包含匹配项的将被返回

span_在以下范围内:

大子句和小子句可以是任何跨度类型的查询。匹配跨距 从小到大,从大到小


至于查询匹配了哪些文档,没有区别。不同之处在于匹配的跨度

  • span_包含大的匹配项
  • span_内的匹配很少
查询将从匹配的span中获得提升,因此span\u containing将从big中获得提升,而span\u in将从匹配的little中获得提升

如果您的span_in或span_containing是考虑匹配span位置的另一span查询的一部分,则差异也会变得相关


例如,假设您有一些文本:

Lorem ipsum dolor sit amet,是一位杰出的献身者

你的span_包含/包含前五个术语,几乎没有匹配的“ipsum”。如果你把它包裹在一个span_near中,那么这个外部span_near的斜率将从大的span_包含的边界,从小的(“ipsum”)的span_包含的边界

“amet”(big的结尾)和“Concertetur”之间的距离是≤1,因此这将与文本匹配:

“span_近”:{
“条款”:[
“span_包含”:{
“小”:{
“span_术语”:{“字段”:“ipsum”}
},
“大”:{
“span_近”:{
“条款”:[
{“span_术语”:{“字段”:“lorem”},
{“span_术语”:{“字段”:“amet”}
],
“slop”:5,
“按顺序”:正确
}
}
},
{“span_term”:{“field”:“concertetur”}
],
“slop”:1,
“按顺序”:正确
}
但是“ipsum”和“Concertetur”之间的距离大于1,因此这不会:

“span_近”:{
“条款”:[
“范围内”:{
“小”:{
“span_术语”:{“字段”:“ipsum”}
},
“大”:{
“span_近”:{
“条款”:[
{“span_术语”:{“字段”:“lorem”},
{“span_术语”:{“字段”:“amet”}
],
“slop”:5,
“按顺序”:正确
}
}
},
{“span_term”:{“field”:“concertetur”}
],
“slop”:1,
“按顺序”:正确
}