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

ASCII folding token filter

원문 보기 위키 갱신

출처: 문서

본문

ASCII folding token filter

asciifolding 토큰 필터는 ASCII가 아닌 문자를 가장 가까운 ASCII 문자로 변환합니다. 예를 들어, é는 e로, ü는 u로, ñ는 n으로 변환됩니다. 이 과정을 음역이라고 합니다.

asciifolding 토큰 필터는 여러 가지 이점을 제공합니다:

  • 향상된 검색 유연성: 사용자가 쿼리를 입력할 때 악센트나 특수 문자를 생략하는 경우가 많습니다. asciifolding 토큰 필터는 이러한 쿼리도 관련 결과를 반환하도록 보장합니다.
  • 정규화: 악센트가 있는 문자가 일관되게 ASCII 문자로 변환되도록 하여 인덱싱 과정을 표준화합니다.
  • 국제화: 여러 언어와 문자 집합을 포함하는 애플리케이션에 특히 유용합니다.

asciifolding 토큰 필터는 검색을 단순화할 수 있지만, 데이터셋에서 악센트가 있는 문자와 없는 문자 간의 구분이 중요한 경우 특정 정보가 손실될 수도 있습니다. {: .warning}

Parameters

asciifolding 토큰 필터는 preserve_original 매개변수를 사용하여 구성할 수 있습니다. 이 매개변수를 true로 설정하면 원래 토큰과 ASCII 폴딩된 버전이 모두 토큰 스트림에 유지됩니다. 이는 검색 쿼리에서 원래(악센트 포함) 버전과 정규화된(악센트 없음) 버전을 모두 일치시키려는 경우에 특히 유용할 수 있습니다. 기본값은 false입니다.

Example

다음 예제 요청은 example_index라는 새 인덱스를 생성하고 asciifolding 필터와 preserve_original 매개변수를 true로 설정한 분석기를 정의합니다:

PUT /example_index
{
  "settings": {
    "analysis": {
      "filter": {
        "custom_ascii_folding": {
          "type": "asciifolding",
          "preserve_original": true
        }
      },
      "analyzer": {
        "custom_ascii_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "custom_ascii_folding"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

Generated tokens

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

POST /example_index/_analyze
{
  "analyzer": "custom_ascii_analyzer",
  "text": "Résumé café naïve coördinate"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 포함됩니다:

{
  "tokens": [
    {
      "token": "resume",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "résumé",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "cafe",
      "start_offset": 7,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "café",
      "start_offset": 7,
      "end_offset": 11,
      "type": "<ALPHANUM>",
      "position": 1
    },
    {
      "token": "naive",
      "start_offset": 12,
      "end_offset": 17,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "naïve",
      "start_offset": 12,
      "end_offset": 17,
      "type": "<ALPHANUM>",
      "position": 2
    },
    {
      "token": "coordinate",
      "start_offset": 18,
      "end_offset": 28,
      "type": "<ALPHANUM>",
      "position": 3
    },
    {
      "token": "coördinate",
      "start_offset": 18,
      "end_offset": 28,
      "type": "<ALPHANUM>",
      "position": 3
    }
  ]
}

더 알아보기 (Learn more)