커스텀 분석기
원본 보기커스텀 분석기
내장 분석기가 요구 사항을 충족하지 못하는 경우, 다음 요소를 적절히 조합한 custom 분석기를 만들 수 있습니다.
custom 분석기는 다음 매개변수를 받습니다.
type- 분석기 타입. 내장 분석기 타입을 받습니다. 커스텀 분석기의 경우
custom을 사용하거나 이 매개변수를 생략합니다. tokenizer- 내장 또는 커스터마이즈된 토크나이저. (필수)
char_filter- 내장 또는 커스터마이즈된 문자 필터의 선택적 배열.
filter- 내장 또는 커스터마이즈된 토큰 필터의 선택적 배열.
position_increment_gap- 텍스트 값의 배열을 색인할 때, Elasticsearch는 구문 쿼리가 서로 다른 배열 요소의 두 용어에 매칭되지 않도록 한 값의 마지막 용어와 다음 값의 첫 용어 사이에 가상의 "간격"을 삽입합니다. 기본값은
100입니다. 자세한 내용은position_increment_gap을 참조하세요.
다음은 아래 요소를 조합한 예제입니다.
- 문자 필터
- 토크나이저
- 토큰 필터
PUT my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"type": "custom",
"tokenizer": "standard",
"char_filter": [
"html_strip"
],
"filter": [
"lowercase",
"asciifolding"
]
}
}
}
}
}
POST my-index-000001/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "Is this <b>déjà vu</b>?"
}
custom분석기에는type을custom으로 지정하거나type매개변수를 생략합니다.
위 예제는 다음 용어를 생성합니다.
[ is, this, deja, vu ]
앞의 예제는 토크나이저, 토큰 필터, 문자 필터를 기본 설정 그대로 사용했지만, 각각을 설정한 버전을 만들어 커스텀 분석기에서 사용할 수도 있습니다.
다음은 아래 요소를 조합한 좀 더 복잡한 예제입니다.
- 문자 필터
-
- Mapping 문자 필터,
:)를_happy_로,:(를_sad_로 치환하도록 설정
- Mapping 문자 필터,
- 토크나이저
-
- Pattern 토크나이저, 구두점 문자를 기준으로 분리하도록 설정
- 토큰 필터
-
- Lowercase 토큰 필터
- Stop 토큰 필터, 미리 정의된 영어 불용어 목록을 사용하도록 설정
예제는 다음과 같습니다.
PUT my-index-000001
{
"settings": {
"analysis": {
"analyzer": {
"my_custom_analyzer": {
"char_filter": [
"emoticons"
],
"tokenizer": "punctuation",
"filter": [
"lowercase",
"english_stop"
]
}
},
"tokenizer": {
"punctuation": {
"type": "pattern",
"pattern": "[ .,!?]"
}
},
"char_filter": {
"emoticons": {
"type": "mapping",
"mappings": [
":) => _happy_",
":( => _sad_"
]
}
},
"filter": {
"english_stop": {
"type": "stop",
"stopwords": "_english_"
}
}
}
}
}
POST my-index-000001/_analyze
{
"analyzer": "my_custom_analyzer",
"text": "I'm a :) person, and you?"
}
- 인덱스에 기본 커스텀 분석기
my_custom_analyzer를 지정합니다. 이 분석기는 요청 뒷부분에서 정의하는 커스텀 토크나이저, 문자 필터, 토큰 필터를 사용합니다. 또한 이 분석기는type매개변수를 생략합니다. - 커스텀
punctuation토크나이저를 정의합니다. - 커스텀
emoticons문자 필터를 정의합니다. - 커스텀
english_stop토큰 필터를 정의합니다.
위 예제는 다음 용어를 생성합니다.
[ i'm, _happy_, person, you ]