Elasticsearch
[Elasticsearch] 동의어 검색
sungjine
2020. 2. 15. 15:01
반응형
단어는 다르지만, 뜻이 같은 경우 같이 검색되도록 하고 싶을 때가 있다. 예를 들어 하늘을 검색한다고 했을 때 Sky와 하늘이 같이 검색되도록 하고 싶을 때가 있는데 이때 동의어 사전을 등록하면 같이 검색되도록 할 수 있다.
동의어 사전을 등록하고 활용하기 위해서 Synonym Token Filter를 활용하면 된다.
이제 Synonym Token Filter를 활용해보자.
아래와 같이 동의어 필터를 추가한다.
"filter" : {
"synonym" : {
"type" : "synonym",
"synonyms_path" : "analysis/synonym.txt"
}
}
synonyms_path에 들어가 있는 경로에 동의어 사전 파일이 존재해야 하며 해당 경로는 elasticsearch/config 하위에 존재해야 한다.
그리고 아래와 같이 분석기의 필터에 추가하고
"analyzer" : {
"synonym" : {
"tokenizer" : "whitespace",
"filter" : ["synonym"]
}
}
아래와 같이 필요한 필드에 분석기를 추가해주면 된다.
"mappings": {
"properties": {
"keyword": {
"type": "text",
"analyzer": "synonym"
}
}
}
만약 이미 색인 된 인덱스에 동의어 사전을 변경하게 되면 재색인을 해야 한다.
참고 : https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-synonym-tokenfilter.html
반응형