캐릭터 필터는 텍스트 분석 중 가장 먼저 처리되는 과정으로 색인된 텍스트가 토크나이저를 만나기 전에 전체 문장에 대해 적용되는 전처리 도구이다.
입력된 문서가 HTML일 경우 HTML 태그들을 제거해 일반 텍스트로 만든다.
같은 이스케이프 문자도 제거함.
{
"tokenizer": "keyword",
"char_filter": [
"html_strip"
],
"text": "<p>I'm so <b>happy</b>!</p>"
}
이렇게 요청하면
태그들이 제거되고 token화 된다.
캐릭터 필터를 이용하면 지정한 단어를 다른 단어로 치환할 수 있다.
특수 문자등을 포함하는 검색 기능을 구현할때 반드시 적용해야 하기 때문에 가장 많이 쓰이는 필터임.
https://esbook.kimjmin.net/06-text-analysis/6.4-character-filter/6.4.2-mapping
다음의 예제를 보자.
POST coding/_bulk
{"index":{"_id":"1"}}
{"language":"Java"}
{"index":{"_id":"2"}}
{"language":"C"}
{"index":{"_id":"3"}}
{"language":"C++"}
이후 아래의 쿼리를 날리면
{
"query": {
"match": {
"language": "C++"
}
}
}
이렇게 C와 C++ 둘다 검색된다. 왜냐하면 도큐먼트가 색인될때 srandard 애널라이저가 C++에서 문자 +를 제거하고, C는 소문자로 처리하면서 역인덱스는 c가 되었기 때문