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
}
]
}