티스토리 뷰

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

반응형
댓글
반응형
최근에 올라온 글
Total
Today
Yesterday
글 보관함
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31