
Elasticsearch에서 token_filter는 텍스트 분석 파이프라인의 중요한 부분으로, 텍스트를 토큰화한 후 필터링을 통해 분석된 토큰을 변형하거나 처리
asciifolding: 유니코드 문자를 ASCII 문자로 변환합니다. 예를 들어, "é"를 "e"로 변환합니다.
cjk_width: CJK(Chinese, Japanese, Korean) 문자들의 너비를 조정합니다. 주로 문서의 일관성을 위해 사용됩니다.
collation: 다양한 언어의 정렬 규칙에 따라 텍스트를 정렬합니다.
edge_ngram: 토큰의 접두사 부분을 생성하여 검색어 자동 완성 기능에 사용됩니다.
ngram: 텍스트에서 고정 길이의 n-그램을 생성합니다.
length: 토큰의 길이를 조정하거나 특정 길이 범위에 맞게 필터링합니다.
lowercase: 토큰을 소문자로 변환합니다.
remove: 특정 문자를 제거합니다. 예를 들어, 구두점을 제거할 때 사용됩니다.
shingle: 여러 토큰을 결합하여 새로운 토큰을 생성합니다. 예를 들어, "The quick brown fox"를 "The quick", "quick brown", "brown fox"와 같이 변환합니다.
stop: 언어별 불용어(stop words)를 제거합니다. 예를 들어, "the", "is", "in"과 같은 일반적인 단어를 제거합니다.
synonym: 동의어를 처리하여 동일한 의미를 가진 다양한 형태의 토큰을 동일하게 취급합니다.
stemmer: 단어의 어근을 추출하여 다양한 형태를 같은 단어로 처리합니다. 예를 들어, "running", "runner"를 "run"으로 변환합니다.
porter_stem: Porter 알고리즘을 사용하여 단어의 어근을 추출합니다.
kstem: K-스테머 알고리즘을 사용하여 단어를 처리합니다.
unique: 중복된 토큰을 제거합니다.
truncate: 토큰을 일정 길이로 자릅니다.
pattern_replace: 정규 표현식을 사용하여 토큰을 대체하거나 수정합니다.
word_delimiter: 단어의 구분 기호를 처리하여, 예를 들어, 하이픈으로 연결된 단어를 분리할 때 사용됩니다.
저는 이 중에서 동의어, 금지어를 사용해 보았고 사용법을 설명하겠습니다.
먼저 동의어 금지어 사전을 만들어야 한다.
동의어 사전
custom_synoym.txtLove, 사랑 tree, 나무 책, 도서 시작, 처음이렇게 작성하면 token filter에서 책이 발견되었을 때 도서에게도 같이 분석된다.
금지어 사전
custom_stop_word.txt겨우 과연금지어 사전의 경우 이렇게 한단어씩 적어두면 된다.
사전들을 만들었다면 이제 사전들을 해당위치에 넣어두어야 한다.
사전의 위치는 Elastic Search 파일의 config에 넣어 두면 된다.
(권한 설정에 유의하자)
PUT token_filter_test_index { "settings": { "analysis": { "analyzer": { "nori_analyzer": { "type": "custom", "tokenizer": "nori_tokenizer", "filter": [ "custom_stop", "custom_synonym" ] } }, "tokenizer":{ "nori_tokenizer": { "type": "nori_tokenizer" } }, "filter": { "custom_stop": { "type": "stop", "stopwords_path": "custom_stop_words.txt" }, "custom_synonym": { "type": "synonym", "synonyms_path": "custom_synoym.txt" } } } } }tokenizer는 nori를 사용해 보았다. filter를 등록해 금지어와 동의어를 등록하였다.
GET token_filter_test_index/_analyze { "analyzer" : "nori_analyzer", "text" : "겨우 책" }결과
{ "tokens": [ { "token": "책", "start_offset": 3, "end_offset": 4, "type": "word", "position": 1 }, { "token": "도서", "start_offset": 3, "end_offset": 4, "type": "SYNONYM", "position": 1 } ] }겨우는 금지어라 token으로 나오지 않고 책을 입력하였는데 동의어로 도서까지 함께 등록 되었다.
token filter는 tokenzier로 분석 된걸 처리하는 filter이다.
쉽게 사용할수 있는 예로는 동의어, 금지어 등이 있다.