span_near 쿼리

span_near 쿼리

span_near 쿼리는 서로 가까이 있는 스팬을 매치해요. 스팬이 얼마나 멀리 떨어져 있을 수 있는지, 특정 순서로 나타나야 하는지 지정할 수 있습니다.

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

  • 서로 특정 거리 안에 나타나는 용어 찾기
  • 단어가 특정 순서로 나타나는 구 매치하기
  • 텍스트에서 서로 가까이 나타나는 관련 개념 찾기

출처: 문서

본문

예제 (Example)

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

다음 쿼리는 "sleeve"와 "long"의 모든 형태가 어떤 순서로든 서로 옆에 나타나는 것을 검색해요.

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

이 쿼리는 문서 1("Long-sleeved…")과 문서 4("…long fluttered sleeves…")를 매치해요. 문서 1에서는 단어들이 서로 옆에 있고, 문서 4에서는 지정된 slop 거리 1 안에 있어요(둘 사이에 1개 단어가 있음).

응답:

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

파라미터 (Parameters)

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

  • clauses (span 쿼리 배열): 매치할 용어나 구를 정의하는 span 쿼리 배열이에요. 지정된 모든 용어는 정의된 slop 거리 안에 나타나야 해요. 필수예요.
  • slop (Integer): 스팬 사이에 허용되는 중간의 일치하지 않는 최대 위치 수예요. 필수예요.
  • in_order (Boolean): 스팬이 clauses 배열과 같은 순서로 나타나야 하는지 여부예요. 선택 사항이며 기본값은 false예요.

더 알아보기 (Learn more)