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

Pattern tokenizer

원문 보기 위키 갱신

출처: 문서

본문

패턴 토크나이저

pattern 토크나이저는 사용자 정의 Java 정규 표현식을 기반으로 텍스트를 토큰으로 분할할 수 있는 매우 유연한 토크나이저예요. Lucene 정규 표현식을 사용하는 simple_pattern 및 simple_pattern_split 토크나이저와 달리, pattern 토크나이저는 더 복잡하고 상세한 정규식 패턴을 처리할 수 있어서 텍스트가 토큰화되는 방식을 더 잘 제어할 수 있어요.

사용 예시

다음 예제 요청은 my_index라는 새 인덱스를 생성하고 pattern 토크나이저를 사용하는 분석기를 구성해요. 토크나이저는 -, _, 또는 . 문자를 기준으로 텍스트를 분할해요.

PUT /my_index
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "my_pattern_tokenizer": {
          "type": "pattern",
          "pattern": "[-_.]"
        }
      },
      "analyzer": {
        "my_pattern_analyzer": {
          "type": "custom",
          "tokenizer": "my_pattern_tokenizer"
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_pattern_analyzer"
      }
    }
  }
}

{% include copy-curl.html %}

생성된 토큰

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

POST /my_index/_analyze
{
  "analyzer": "my_pattern_analyzer",
  "text": "OpenSearch-2024_v1.2"
}

{% include copy-curl.html %}

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

{
  "tokens": [
    {
      "token": "OpenSearch",
      "start_offset": 0,
      "end_offset": 10,
      "type": "word",
      "position": 0
    },
    {
      "token": "2024",
      "start_offset": 11,
      "end_offset": 15,
      "type": "word",
      "position": 1
    },
    {
      "token": "v1",
      "start_offset": 16,
      "end_offset": 18,
      "type": "word",
      "position": 2
    },
    {
      "token": "2",
      "start_offset": 19,
      "end_offset": 20,
      "type": "word",
      "position": 3
    }
  ]
}

매개변수

pattern 토크나이저는 다음 매개변수로 구성할 수 있어요.

매개변수 필수/선택 데이터 유형 설명
pattern 선택 String 텍스트를 토큰으로 분할하는 데 사용되는 패턴으로, Java 정규 표현식으로 지정해요. 기본값은 \W+예요.
flags 선택 String 정규 표현식에 적용할 플래그를 파이프로 구분하여 구성해요. 예: `"CASE_INSENSITIVE
group 선택 Integer 토큰으로 사용할 캡처 그룹을 지정해요. 기본값은 -1(일치 시 분할)이에요.

group 매개변수 사용 예시

다음 예제 요청은 두 번째 그룹만 캡처하는 group 매개변수를 구성해요.

PUT /my_index_group2
{
  "settings": {
    "analysis": {
      "tokenizer": {
        "my_pattern_tokenizer": {
          "type": "pattern",
          "pattern": "([a-zA-Z]+)(\\d+)",
          "group": 2
        }
      },
      "analyzer": {
        "my_pattern_analyzer": {
          "type": "custom",
          "tokenizer": "my_pattern_tokenizer"
        }
      }
    }
  }
}

{% include copy-curl.html %}

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

POST /my_index_group2/_analyze
{
  "analyzer": "my_pattern_analyzer",
  "text": "abc123def456ghi"
}

{% include copy-curl.html %}

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

{
  "tokens": [
    {
      "token": "123",
      "start_offset": 3,
      "end_offset": 6,
      "type": "word",
      "position": 0
    },
    {
      "token": "456",
      "start_offset": 9,
      "end_offset": 12,
      "type": "word",
      "position": 1
    }
  ]
}

더 알아보기 (Learn more)