New

The executive guide to generative AI

Read more

Span field masking query

edit

Wrapper to allow span queries to participate in composite single-field span queries by lying about their search field. The span field masking query maps to Lucene’s SpanFieldMaskingQuery

This can be used to support queries like span-near or span-or across different fields, which is not ordinarily permitted.

Span field masking query is invaluable in conjunction with multi-fields when same content is indexed with multiple analyzers. For instance we could index a field with the standard analyzer which breaks text up into words, and again with the english analyzer which stems words into their root form.

Example:

response = client.search(
  body: {
    query: {
      span_near: {
        clauses: [
          {
            span_term: {
              text: 'quick brown'
            }
          },
          {
            span_field_masking: {
              query: {
                span_term: {
                  "text.stems": 'fox'
                }
              },
              field: 'text'
            }
          }
        ],
        slop: 5,
        in_order: false
      }
    }
  }
)
puts response
GET /_search
{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_term": {
            "text": "quick brown"
          }
        },
        {
          "span_field_masking": {
            "query": {
              "span_term": {
                "text.stems": "fox"
              }
            },
            "field": "text"
          }
        }
      ],
      "slop": 5,
      "in_order": false
    }
  }
}

Note: as span field masking query returns the masked field, scoring will be done using the norms of the field name supplied. This may lead to unexpected scoring behaviour.

Was this helpful?
Feedback