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

Shingle token filter

원문 보기 위키 갱신

출처: 문서

본문

Shingle token filter

shingle 토큰 필터는 입력 텍스트에서 단어 n-gram, 즉 _shingle_을 생성하는 데 사용돼요. 예를 들어, 문자열 slow green turtle의 경우 shingle 필터는 다음과 같은 1단어 및 2단어 shingle을 만들어요: slow, slow green, green, green turtle, turtle.

이 토큰 필터는 개별 토큰 대신 구문을 인덱싱하여 검색 정확도를 높이기 위해 다른 필터와 함께 자주 사용돼요. 자세한 내용은 Phrase suggester를 참조하세요.

파라미터

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

파라미터 필수/선택 데이터 타입 설명
min_shingle_size 선택 Integer 연결할 최소 토큰 수예요. 기본값은 2예요.
max_shingle_size 선택 Integer 연결할 최대 토큰 수예요. 기본값은 2예요.
output_unigrams 선택 Boolean 출력에 유니그램(개별 토큰)을 포함할지 여부예요. 기본값은 true예요.
output_unigrams_if_no_shingles 선택 Boolean shingle이 생성되지 않을 때 유니그램을 출력할지 여부예요. 기본값은 false예요.
token_separator 선택 String 토큰을 shingle로 연결하는 데 사용되는 구분자예요. 기본값은 공백(" ")이에요.
filler_token 선택 String 토큰 사이의 빈 위치나 간격에 삽입되는 토큰이에요. 기본값은 밑줄(_)이에요.

output_unigrams과 output_unigrams_if_no_shingles이 모두 true로 설정되면 output_unigrams_if_no_shingles는 무시돼요. {: .note}

예제

다음 예제 요청은 my-shingle-index라는 새 인덱스를 생성하고 shingle 필터로 분석기를 구성해요.

PUT /my-shingle-index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_shingle_filter": {
          "type": "shingle",
          "min_shingle_size": 2,
          "max_shingle_size": 2,
          "output_unigrams": true
        }
      },
      "analyzer": {
        "my_shingle_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "my_shingle_filter"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

다음 요청을 사용하여 분석기로 생성된 토큰을 확인해요.

GET /my-shingle-index/_analyze
{
  "analyzer": "my_shingle_analyzer",
  "text": "slow green turtle"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 포함돼요.

{
  "tokens": [
    {
      "token": "slow",
      "start_offset": 0,
      "end_offset": 4,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "slow green",
      "start_offset": 0,
      "end_offset": 10,
      "type": "shingle",
      "position": 0,
      "positionLength": 2
    },
    {
      "token": "green",
      "start_offset": 5,
      "end_offset": 10,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "green turtle",
      "start_offset": 5,
      "end_offset": 17,
      "type": "shingle",
      "position": 1,
      "positionLength": 2
    },
    {
      "token": "turtle",
      "start_offset": 11,
      "end_offset": 17,
      "type": "<ALPHANUM>",
      "position": 2
    }
  ]
}

더 알아보기 (Learn more)