Span not 查询
编辑Span not 查询
编辑移除与另一个 span 查询重叠的匹配项,或者在另一个 SpanQuery 之前的 x 个 token 内(由参数 pre
控制)或之后 y 个 token 内(由参数 post
控制)的匹配项。下面是一个示例:
resp = client.search( query={ "span_not": { "include": { "span_term": { "field1": "hoya" } }, "exclude": { "span_near": { "clauses": [ { "span_term": { "field1": "la" } }, { "span_term": { "field1": "hoya" } } ], "slop": 0, "in_order": True } } } }, ) print(resp)
response = client.search( body: { query: { span_not: { include: { span_term: { "field1": 'hoya' } }, exclude: { span_near: { clauses: [ { span_term: { "field1": 'la' } }, { span_term: { "field1": 'hoya' } } ], slop: 0, in_order: true } } } } } ) puts response
const response = await client.search({ query: { span_not: { include: { span_term: { field1: "hoya", }, }, exclude: { span_near: { clauses: [ { span_term: { field1: "la", }, }, { span_term: { field1: "hoya", }, }, ], slop: 0, in_order: true, }, }, }, }, }); console.log(response);
GET /_search { "query": { "span_not": { "include": { "span_term": { "field1": "hoya" } }, "exclude": { "span_near": { "clauses": [ { "span_term": { "field1": "la" } }, { "span_term": { "field1": "hoya" } } ], "slop": 0, "in_order": true } } } } }
include
和 exclude
子句可以是任何 span 类型查询。include
子句是要过滤其匹配项的 span 查询,而 exclude
子句是其匹配项不得与返回的匹配项重叠的 span 查询。
在上面的示例中,所有包含词条 hoya 的文档都会被过滤掉,除了那些在它们前面有 *la* 的文档。
其他顶级选项
|
如果设置,则 include span 之前的 token 数量不得与 exclude span 重叠。默认为 0。 |
|
如果设置,则 include span 之后的 token 数量不得与 exclude span 重叠。默认为 0。 |
|
如果设置,则 include span 内的 token 数量不得与 exclude span 重叠。等效于同时设置 |