Pattern analyzer
출처: 문서
본문
패턴 분석기
pattern 분석기를 사용하면 정규식(regex)으로 입력 텍스트를 토큰으로 분할하는 커스텀 분석기를 정의할 수 있어요. 또한 정규식 플래그 적용, 토큰 소문자 변환, 불용어(stopwords) 필터링을 위한 옵션도 제공해요.
파라미터
pattern 분석기는 다음 파라미터로 구성할 수 있어요.
| 파라미터 | 필수/선택 | 데이터 타입 | 설명 |
|---|---|---|---|
pattern |
선택 | String | 입력을 토큰화하는 데 사용되는 Java 정규 표현식이에요. 기본값은 \W+예요. |
flags |
선택 | String | 정규식의 동작을 수정하는, 파이프로 구분된 Java 정규식 플래그를 담고 있는 문자열이에요. |
lowercase |
선택 | Boolean | 토큰을 소문자로 변환할지 여부예요. 기본값은 true예요. |
stopwords |
선택 | String 또는 문자열 목록 | 미리 정의된 불용어 목록(예: _english_)을 지정하는 문자열 또는 커스텀 불용어 목록을 지정하는 배열이에요. 기본값은 _none_이에요. |
stopwords_path |
선택 | String | 불용어 목록이 담긴 파일의 경로(절대 경로 또는 config 디렉터리 기준의 상대 경로)예요. |
예제
다음 명령어를 사용해 pattern 분석기가 있는 my_pattern_index라는 이름의 인덱스를 만들어 보세요:
PUT /my_pattern_index
{
"settings": {
"analysis": {
"analyzer": {
"my_pattern_analyzer": {
"type": "pattern",
"pattern": "\\W+",
"lowercase": true,
"stopwords": ["and", "is"]
}
}
}
},
"mappings": {
"properties": {
"my_field": {
"type": "text",
"analyzer": "my_pattern_analyzer"
}
}
}
}
{% include copy-curl.html %}
생성된 토큰
다음 요청으로 분석기가 생성한 토큰을 살펴보세요:
POST /my_pattern_index/_analyze
{
"analyzer": "my_pattern_analyzer",
"text": "OpenSearch is fast and scalable"
}
{% include copy-curl.html %}
응답에는 생성된 토큰이 포함되어 있어요:
{
"tokens": [
{
"token": "opensearch",
"start_offset": 0,
"end_offset": 10,
"type": "word",
"position": 0
},
{
"token": "fast",
"start_offset": 14,
"end_offset": 18,
"type": "word",
"position": 2
},
{
"token": "scalable",
"start_offset": 23,
"end_offset": 31,
"type": "word",
"position": 4
}
]
}