Match phrase prefix 쿼리

Match phrase prefix 쿼리

match_phrase_prefix 쿼리를 사용해 순서대로 일치할 구문을 지정할 수 있어요. 지정한 구문을 포함하는 문서가 반환됩니다. 구문의 마지막 부분 용어는 접두사로 해석되므로, 지정한 구문과 마지막 용어의 접두사로 시작하는 구문을 포함한 모든 문서가 반환됩니다.

출처: 문서

본문

match_phrase_prefix 쿼리를 사용해 순서대로 일치할 구문을 지정하세요. 지정한 구문을 포함하는 문서가 반환돼요. 구문의 마지막 부분 용어는 접두사로 해석되므로, 그 구문과 마지막 용어의 접두사로 시작하는 구문을 포함한 모든 문서가 반환돼요.

match phrase와 비슷하지만 쿼리 문자열의 마지막 용어로 prefix 쿼리를 만들어요.

match_phrase_prefix와 match_bool_prefix 쿼리의 차이는 The match_bool_prefix and match_phrase_prefix queries에서 참조하세요.

다음 예시는 기본 match_phrase_prefix 쿼리를 보여줘요.

GET _search
{
  "query": {
    "match_phrase_prefix": {
      "title": "the wind"
    }
  }
}

추가 파라미터를 전달하려면 확장 구문을 사용할 수 있어요.

GET _search
{
  "query": {
    "match_phrase_prefix": {
      "title": {
        "query": "the wind",
        "analyzer": "stop"
      }
    }
  }
}

예시 (Example)

예를 들어 다음 문서가 있는 인덱스를 생각해 볼게요.

PUT testindex/_doc/1
{
  "title": "The wind rises"
}
PUT testindex/_doc/2
{
  "title": "Gone with the wind"
  
}

다음 match_phrase_prefix 쿼리는 전체 단어 wind 다음에 ri로 시작하는 단어가 오는 것을 검색해요.

GET testindex/_search
{
  "query": {
    "match_phrase_prefix": {
      "title": "wind ri"
    }
  }
}

응답에는 일치하는 문서가 포함돼요.

응답

{
  "took": 6,
  "timed_out": false,
  "_shards": {
    "total": 1,
    "successful": 1,
    "skipped": 0,
    "failed": 0
  },
  "hits": {
    "total": {
      "value": 1,
      "relation": "eq"
    },
    "max_score": 0.92980814,
    "hits": [
      {
        "_index": "testindex",
        "_id": "1",
        "_score": 0.92980814,
        "_source": {
          "title": "The wind rises"
        }
      }
    ]
  }
}

파라미터 (Parameters)

이 쿼리는 필드 이름(<field>)을 최상위 파라미터로 받아들여요.

GET _search
{
  "query": {
    "match_phrase": {
      "": {
        "query": "text to search for",
        ... 
      }
    }
  }
}

<field>는 다음 파라미터를 받아들여요. query를 제외한 모든 파라미터는 선택 사항이에요.

파라미터 데이터 타입 설명
query String 검색에 사용할 쿼리 문자열. 필수.
analyzer String 쿼리를 토큰화하는 데 사용되는 분석기.
max_expansions 양의 정수 쿼리가 확장할 수 있는 최대 용어 수. 퍼지 쿼리는 fuzziness에 지정된 거리 안에 있는 일치 용어 수로 "확장"됨. 그런 다음 OpenSearch는 그 용어들을 매칭하려 함. 기본값은 50.
slop 0(기본값) 또는 양의 정수 쿼리의 단어들이 순서가 뒤바뀌어도 여전히 일치로 간주될 수 있는 정도를 제어함. Lucene 문서에서: "쿼리 구문의 단어 사이에 허용되는 다른 단어의 수. 예를 들어 두 단어의 순서를 바꾸려면 두 번의 이동이 필요하므로(첫 번째 이동이 단어들을 서로 위에 놓음) 구문의 재정렬을 허용하려면 slop은 최소 2여야 함. 값 0은 정확히 일치를 요구함."

더 알아보기 (Learn more)