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

Language analyzers

원문 보기 위키 갱신

출처: 문서

본문

언어 분석기

OpenSearch는 다음 언어 분석기를 지원해요: arabic, armenian, basque, bengali, brazilian, bulgarian, catalan, czech, danish, dutch, english, estonian, finnish, french, galician, german, greek, hindi, hungarian, indonesian, irish, italian, kuromoji (일본어 분석기; 플러그인 필요), latvian, lithuanian, norwegian, persian, polish (플러그인 필요), portuguese, romanian, russian, sorani, spanish, swedish, thai, turkish, 그리고 ukrainian (플러그인 필요).

고급 유니코드 지원을 통한 다국어 텍스트 처리를 위해 OpenSearch는 icu_analyzer도 제공해요. 이 분석기는 중국어, 일본어, 한국어, 태국어, 아랍어와 같은 복잡한 문자 체계를 가진 언어에 뛰어난 텍스트 분할을 제공해요 (analysis-icu 플러그인이 필요해요).

인덱스를 매핑할 때 분석기를 사용하려면 쿼리에서 값을 지정해요. 예를 들어, 인덱스를 프랑스어 분석기로 매핑하려면 analyzer 필드에 french 값을 지정해요:

 "analyzer": "french"

예제 요청

다음 쿼리는 content 필드가 다중 필드로 구성되고 french라는 하위 필드가 french 언어 분석기로 구성된 my-index 인덱스를 지정해요:

PUT my-index
{
  "mappings": {
    "properties": {
      "content": { 
        "type": "text",
        "fields": {
          "french": { 
            "type": "text",
            "analyzer": "french"
          }
        }
      }
    }
  }
}

{% include copy-curl.html %}

기본 french 분석기는 다음 쿼리를 사용하여 전체 인덱스에 대해 구성할 수도 있어요:

PUT my-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "default": {
          "type": "french"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text"
      },
      "title": {
        "type": "text"
      },
      "description": {
        "type": "text"
      }
    }
  }
}

{% include copy-curl.html %}

어간 제외

어간 제외는 스테밍에서 제외할 소문자 단어 목록을 제공하여 모든 언어 분석기에 적용할 수 있어요. 내부적으로 OpenSearch는 keyword_marker 토큰 필터를 사용하여 이 단어들을 키워드로 표시하여 스테밍되지 않도록 해요.

어간 제외 예제

다음 요청을 사용하여 stem_exclusion을 구성해요:

PUT index_with_stem_exclusion_english_analyzer
{
  "settings": {
    "analysis": {
      "analyzer": {
        "stem_exclusion_english_analyzer":{
          "type":"english",
          "stem_exclusion": ["manager", "management"]
        }
      }
    }
  }
}

{% include copy-curl.html %}

사용자 정의 분석기와 어간 제외

모든 언어 분석기는 특정 언어에 특화된 토크나이저와 토큰 필터로 구성되어 있어요. 어간 제외가 포함된 사용자 정의 버전의 언어 분석기를 구현하려면 keyword_marker 토큰 필터를 구성하고 keywords 매개변수에 스테밍에서 제외할 단어를 나열해야 해요:

PUT index_with_keyword_marker_analyzer
{
  "settings": {
    "analysis": {
      "filter": {
        "protected_keywords_filter": {
          "type": "keyword_marker",
          "keywords": ["Apple", "OpenSearch"]
        }
      },
      "analyzer": {
        "custom_english_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "protected_keywords_filter",
            "english_stemmer"
          ]
        }
      }
    }
  }
}

{% include copy-curl.html %}

더 알아보기 (Learn more)