반응형
검색기에서 복합명사를 검색시, 사람들은 보통 띄어쓰기 구분 없이 입력하여,
둘 다 검색되기를 기대합니다.
예를 들어, "홍대입구" 와 "홍대 입구" 처럼요.
하지만, Elasticsearch에서 설정된 기본 필드를 이용하면, 기대했던 결과가 나오지 않는데요.
이 문제는 인덱스 생성시, pattern_replace를 사용하여 해결할 수 있습니다.
아래와 같이 교체대상의 패턴을 pattern 필드에 넣고,
교체문자를 replacement 필드에 입력합니다.
저는 여기서 정규식으로 "하나 이상의 공백"을 제거하는 패턴을 넣었습니다.
{
"analysis": {
"char_filter": {
"whitespace_remove": {
"type": "pattern_replace",
"pattern": "\\s+",
"replacement": ""
}
},
"analyzer": {
"custom_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": ["lowercase", "asciifolding"],
"char_filter": ["whitespace_remove"]
}
}
}
}
반응형
'Elasticsearch' 카테고리의 다른 글
docker-elk에 nori 설치하기 (0) | 2021.09.29 |
---|