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

Keyword marker token filter

원문 보기 위키 갱신

출처: 문서

본문

키워드 마커 토큰 필터

keyword_marker 토큰 필터는 특정 토큰이 어간 추출기나 다른 필터에 의해 변경되는 것을 방지하는 데 사용돼요. keyword_marker 토큰 필터는 지정된 토큰을 keywords로 표시하여 어간 추출이나 다른 처리를 방지해요. 이를 통해 특정 단어가 원래 형태를 유지할 수 있어요.

파라미터

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

파라미터 필수/선택 데이터 유형 설명
ignore_case 선택 Boolean 키워드를 일치시킬 때 대소문자를 무시할지 여부예요. 기본값은 false예요.
keywords keywords_path 또는 keywords_pattern이 설정되지 않은 경우 필수 List of strings 키워드로 표시할 토큰 목록이에요.
keywords_path keywords 또는 keywords_pattern이 설정되지 않은 경우 필수 String 키워드 목록의 경로(config 디렉터리 기준 상대 경로 또는 절대 경로)예요.
keywords_pattern keywords 또는 keywords_path가 설정되지 않은 경우 필수 String 키워드로 표시할 토큰을 일치시키는 데 사용되는 정규 표현식이에요.

예제

다음 예제 요청은 my_index라는 새 인덱스를 생성하고 keyword_marker 필터로 분석기를 구성해요. 이 필터는 example이라는 단어를 키워드로 표시해요.

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": ["lowercase", "keyword_marker_filter", "stemmer"]
        }
      },
      "filter": {
        "keyword_marker_filter": {
          "type": "keyword_marker",
          "keywords": ["example"]
        }
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

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

GET /my_index/_analyze
{
  "analyzer": "custom_analyzer",
  "text": "Favorite example"
}

{% include copy-curl.html %}

응답에는 생성된 토큰이 포함돼요. favorite라는 단어는 어간 추출이 되었지만 example이라는 단어는 키워드로 표시되었기 때문에 어간 추출이 되지 않았어요.

{
  "tokens": [
    {
      "token": "favorit",
      "start_offset": 0,
      "end_offset": 8,
      "type": "<ALPHANUM>",
      "position": 0
    },
    {
      "token": "example",
      "start_offset": 9,
      "end_offset": 16,
      "type": "<ALPHANUM>",
      "position": 1
    }
  ]
}

_analyze 쿼리에 다음 파라미터를 추가하여 keyword_marker 토큰 필터의 영향을 더 자세히 확인할 수 있어요.

GET /my_index/_analyze
{
  "analyzer": "custom_analyzer",
  "text": "This is an OpenSearch example demonstrating keyword marker.",
  "explain": true,
  "attributes": "keyword"
}

{% include copy-curl.html %}

그러면 다음과 유사한 추가 세부 정보가 응답에 포함돼요.

{
    "name": "porter_stem",
    "tokens": [
      ...
      {
        "token": "example",
        "start_offset": 22,
        "end_offset": 29,
        "type": "<ALPHANUM>",
        "position": 4,
        "keyword": true
      },
      {
        "token": "demonstr",
        "start_offset": 30,
        "end_offset": 43,
        "type": "<ALPHANUM>",
        "position": 5,
        "keyword": false
      },
      ...
    ]
}

더 알아보기 (Learn more)