elasticsearch 다중 단어 위치 일치 조회

8970 단어 elasticsearch

구문 일치

match 조회가 표준 전문 검색에 가장 자주 사용되는 조회인 것처럼 서로 인접한 검색어의 조회 방법을 찾으려면 match_phrase 조회가 생각난다.
GET /my_index/my_type/_search
{
    "query": {
        "match_phrase": {
            "title": "quick brown fox"
        }
    }
}

유사 match 검색, match_phrase 검색은 먼저 검색 문자열을 하나의 단어 목록으로 해석한 다음에 이 단어 항목을 검색하지만, 모든 검색어 항목을 포함하고 위치가 검색어 항목과 같은 문서만 보존합니다.예를 들어 quick fox에 대한 단어 검색은 문서에 일치하지 않을 수 있습니다. 문서에 포함된 quick 단어가 없으면 fox 바로 뒤따릅니다.
Tip match_phrase 쿼리 역시 phrase 쿼리 유형으로 작성할 수 있습니다.
"match": {
    "title": {
        "query": "quick brown fox",
        "type":  "phrase"
    }
}

단어 항목의 위치


문자열이 단어로 구분되면 이 분석기는 단어 목록을 되돌릴 뿐만 아니라 원본 문자열의 위치나 순서 관계도 되돌려줍니다.
GET /_analyze?analyzer=standard
Quick brown fox

반환 정보는 다음과 같습니다.
{
   "tokens": [
      {
         "token": "quick",
         "start_offset": 0,
         "end_offset": 5,
         "type": "",
         "position": 1 (1)
      },
      {
         "token": "brown",
         "start_offset": 6,
         "end_offset": 11,
         "type": "",
         "position": 2 (1)
      },
      {
         "token": "fox",
         "start_offset": 12,
         "end_offset": 15,
         "type": "",
         "position": 3 (1)
      }
   ]
}
  • match는 각 단어 항목이 원시 문자열의 위치를 대표한다.

  • 위치 정보는 역렬 인덱스에 저장될 수 있기 때문에 position 검색어의 위치에 민감한 검색은 위치 정보를 이용하여 모든 검색어를 포함하는 항목을 일치시킬 수 있고 각 단어의 순서도 우리가 지정한 것과 일치하는 문서를 검색할 수 있으며 중간에 다른 단어가 섞이지 않는다.

    뭐 공부 해요?


    구문 match_phrase 과 일치하는 문서는 다음 요구 사항을 충족해야 합니다.
  • quick brown fox,quick,brownfox 모두 도메인에 있어야 합니다.
  • brown의 위치는 quick의 위치보다 커야 한다1.
  • fox의 위치는 quick의 위치보다 커야 한다2.

  • 위의 모든 옵션이 성립되지 않으면 이 문서는 일치한다고 인정할 수 없습니다.
    Tip
    본질적으로 말하자면 match_phrase 조회는 낮은 등급의 span 조회족(queryfamily)을 이용하여 단어의 위치가 민감한 일치를 한다.Span 조회는 단어 등급의 조회이기 때문에 단어를 나누는 단계가 없다.그것들은 지정된 단어 항목만 정확하게 검색한다.
    다행히도 match_phrase 조회가 충분히 우수하여 대다수 사람들이 직접 span 조회를 사용하지 않는다.그러나 일부 전문 분야, 예를 들어 특허 검색은 이런 저급 조회를 이용하여 매우 구체적이고 정성스럽게 구성된 위치 검색을 집행한다.

    좋은 웹페이지 즐겨찾기