span field masking 쿼리

span field masking 쿼리

field_masking_span 쿼리는 쿼리의 실제 필드를 "마스킹"해 span 쿼리가 여러 필드에 걸쳐 일치할 수 있게 해줘요. 이는 멀티 필드(같은 내용이 다른 분석기로 인덱싱된 경우)를 다룰 때나 span_near, span_or 같은 span 쿼리를 서로 다른 필드에 걸쳐 실행해야 할 때(보통 허용되지 않음) 특히 유용합니다.

예를 들어 field_masking_span 쿼리를 사용해 다음을 할 수 있어요.

  • 원본 필드와 그 어간 추출(stemmed) 버전에 걸쳐 용어를 매치하기
  • 서로 다른 필드의 span 쿼리를 단일 span 연산으로 결합하기
  • 다른 분석기로 인덱싱된 같은 내용을 다루기

필드 마스킹을 사용하면 관련성 점수는 실제 검색 중인 필드가 아니라 마스킹된 필드의 특성(norms)으로 계산돼요. 즉 마스킹된 필드가 검색 중인 필드와 다른 속성(길이나 boost 값 같은)을 가지면 예상치 못한 점수 결과를 받을 수 있습니다.

출처: 문서

본문

예제 (Example)

이 섹션의 예제를 실행하려면 설정(setup) 단계를 완료하세요.

다음 쿼리는 stemmed 필드에서 "sleeve" 단어의 변형 근처에 있는 "long" 단어를 검색해요.

GET /clothing/_search
{
  "query": {
    "span_near": {
      "clauses": [
        {
          "span_term": {
            "description": "long"
          }
        },
        {
          "field_masking_span": {
            "query": {
              "span_term": {
                "description.stemmed": "sleev"
              }
            },
            "field": "description"
          }
        }
      ],
      "slop": 1,
      "in_order": true
    }
  }
}

이 쿼리는 문서 1과 문서 4를 매치해요.

  • 두 문서 모두 description 필드에 "long"이라는 용어가 나타나요.
  • 문서 1에는 "sleeved"라는 단어가, 문서 4에는 "sleeves"라는 단어가 있어요.
  • field_masking_span은 stemmed 필드의 일치가 원본 필드에 있는 것처럼 보이게 해요.
  • 용어들이 지정된 순서로 서로 1 위치 안에 나타나요("long"이 "sleeve"보다 앞에 와야 함).

응답:

{
  "took": 7,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 2,
      "relation": "eq"
    },
    "max_score": 0.7444251,
    "hits": [
      {
        "_index": "clothing",
        "_id": "1",
        "_score": 0.7444251,
        "_source": {
          "description": "Long-sleeved dress shirt with a formal collar and button cuffs. "
        }
      },
      {
        "_index": "clothing",
        "_id": "4",
        "_score": 0.4291246,
        "_source": {
          "description": "A set of two midi silk shirt dresses with long fluttered sleeves in black. "
        }
      }
    ]
  }
}

파라미터 (Parameters)

다음 표는 field_masking_span 쿼리가 지원하는 모든 최상위 파라미터를 나열해요. 모든 파라미터는 필수예요.

  • query (Object): 실제 필드에 실행할 span 쿼리예요.
  • field (String): 쿼리를 마스킹하는 데 사용되는 필드 이름이에요. 다른 span 쿼리는 이 쿼리가 이 필드에서 실행되는 것처럼 취급해요.

더 알아보기 (Learn more)