본문 바로가기
WIKI 기술 지식 베이스

N-gram token filter

원문 보기 위키 갱신

출처: 문서

본문

N-gram 토큰 필터

ngram 토큰 필터는 텍스트를 _n-gram_이라고 불리는 더 작은 구성 요소로 분해하는 강력한 도구로, 부분 일치와 퍼지 검색 기능을 향상시키는 데 도움이 돼요. 이 필터는 토큰을 지정된 길이의 더 작은 부분 문자열로 분할하는 방식으로 동작해요. 이런 필터는 자동 완성, 부분 일치, 오타 허용 검색을 지원하기 위해 검색 애플리케이션에서 흔히 사용돼요. 자세한 내용은 자동 완성 기능 및 Did-you-mean 문서를 참조하세요.

파라미터

ngram 토큰 필터는 다음 파라미터로 구성할 수 있어요.

파라미터 필수/선택 데이터 타입 설명
min_gram 선택 Integer n-gram의 최소 길이예요. 기본값은 1이에요.
max_gram 선택 Integer n-gram의 최대 길이예요. 기본값은 2예요.
preserve_original 선택 Boolean 원본 토큰을 출력 결과 중 하나로 유지할지 여부예요. 기본값은 false이에요.

예제

다음 예제 요청은 ngram_example_index라는 이름의 새 인덱스를 생성하고, ngram 필터가 포함된 애널라이저를 구성해요:

PUT /ngram_example_index
{
  "settings": {
    "analysis": {
      "filter": {
        "ngram_filter": {
          "type": "ngram",
          "min_gram": 2,
          "max_gram": 3
        }
      },
      "analyzer": {
        "ngram_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "ngram_filter"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

다음 요청을 사용해 애널라이저가 생성한 토큰을 확인해 보세요:

POST /ngram_example_index/_analyze
{
  "analyzer": "ngram_analyzer",
  "text": "Search"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 포함되어 있어요:

{
  "tokens": [
    {
      "token": "se",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "sea",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "ea",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "ear",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "ar",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "arc",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "rc",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "rch",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "ch",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}

더 알아보기 (Learn more)