티스토리 뷰

반응형

동의어를 적용한 후 동의어 사전을 변경하게 되면 재색인을 해야 한다고 동의어 글에서 언급했었다.

 

이번 글에서는 재색인을 하지 않고 바로 적용할 수 있는 방법을 작성한다.

 

우선 동의어 글에 작성된 것처럼 동의어를 필터에 적용한 synonym 분석기를 mapping의 analyzer 속성에 작성했다면 재색인을 해야지만 이미 색인된 내용에 동의어가 적용된다.

 

하지만 인덱싱할 때 동의어를 적용하는 것이 아니라 검색할 때 검색어에 동의어를 적용한다면 검색할 문서를 변경할 필요가 없기 때문에 재색인을 하지 않고도 동의어를 통한 검색이 잘 동작하게 된다.

 

 * 세팅 및 매핑 정보

"setting" : {
	"filter" : { 
		"synonym" : { 
			"type" : "synonym", 
			"synonyms_path" : "analysis/synonym.txt" 
		}
	},
	"analyzer" : { 
		"synonym" : { 
			"tokenizer" : "whitespace", 
			"filter" : ["synonym"]
		}
	}
},
"mappings": { 
	"properties": { 
		"keyword": { 
			"type": "text", 
			"analyzer": "standard" 
			"search_analyzer": "synonym" 
		} 
	} 
}

다만 추가된 동의어를 사용하기 위해서는 인덱스를 닫았다가 열어야 하는데 재색인과 비교한다면 거의 바로 적용된다고 생각해도 될 것 같다.

 

또한 Elasticsearch 7.3 버전, 이후 버전에서는 닫았다가 열지 않아도 적용되도록 개선되었다.

 

_reload_search_analyzers API를 활용하는 것인데 해당 API를 사용하기 위해서는 동의어 filter의 updateable 속성에 true 값을 추가해야 하고 해당 필터를 사용하는 분석기를 검색 시에만 사용해야 한다.

 

위의 필터를 아래와 같이 변경하면 된다.

"filter" : {
	"synonym" : {
		"type" : "synonym", 
		"synonyms_path" : "analysis/synonym.txt" 
		"updateable" : true 
	}
}
반응형
댓글
반응형
최근에 올라온 글
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