딱 엘라스틱서치 플러그인 자체만 적용해서 사용하고 있습니다.
(한국어 사전 등은 엘라스틱서치 플러그인에 자체 내장되어 있다고 적혀있길래, 정말 플러그인만 적용했습니다.)
그런데, 은전한닢 사용 시 제 상식 선에서는 검색이 되어야하는데, 검색이 되지 않는 항목이 있어 문의드립니다.
1. 분석기 정보
"analysis": {
"analyzer": {
"seunjeon": {
"type": "custom",
"tokenizer": "seunjeon_default_tokenizer"
},
"tokenizer": {
"seunjeon_default_tokenizer": {
"type": "seunjeon_tokenizer"
}
}
}
위와 같이 은전한닢 토크나이저만을 사용한 seunjeon 분석기를 생성했습니다.
2. 필드 매핑 정보
"address1": {
"type": "text",
"analyzer": "seunjeon"
}
위와 같이 text 데이터 타입의 seunjeon 분석기를 적용했습니다.
별도 search_analyzer를 선언해주지 않으면, 색인 시 뿐만 아니라, 쿼리 질의 시에도 분석기가 돌아가는 것으로 알고있습니다.
3. 저장된 토큰 정보
"서울특별시" 저장 시 아래와 같이 토큰이 저장됨을 확인했습니다.
"terms": {
"서울/N": {
"term_freq": 1,
"tokens": [
{
"position": 0,
"start_offset": 0,
"end_offset": 2
}
]
},
"시/N": {
"term_freq": 1,
"tokens": [
{
"position": 2,
"start_offset": 4,
"end_offset": 5
}
]
},
"특별/N": {
"term_freq": 1,
"tokens": [
{
"position": 1,
"start_offset": 2,
"end_offset": 4
}
]
},
"특별시/EOJ": {
"term_freq": 1,
"tokens": [
{
"position": 1,
"start_offset": 2,
"end_offset": 5
}
]
}
}
4. 검색 쿼리
"query": {
"match": {
"address1": {
"query": "서울시"
}
}
}
위와 같이 "서울시"로 검색했습니다.
--> 검색결과 "서울특별시"가 나오지 않았습니다.
5. 은전한닢 분석기로 "서울시" 분석 결과
아래와 같이 "서울시" 단어에 대해 토큰 분해하는 것을 확인했습니다.
"tokens": [
{
"token": "서울/N",
"start_offset": 0,
"end_offset": 2,
"type": "N",
"position": 0
},
{
"token": "서울시/EOJ",
"start_offset": 0,
"end_offset": 3,
"type": "EOJ",
"position": 0,
"positionLength": 2
},
{
"token": "시/N",
"start_offset": 2,
"end_offset": 3,
"type": "N",
"position": 1
}
]
match쿼리를 썼기때문에 쿼리 질의 시 검색어에 대해 분석이 진행됬을 거라고 추측되구요,.
그렇다면 "서울특별시" , "서울시" 모두 "서울/N" 이라는 토큰을 가지고 있는데, 왜 검색이 안되는지 모르겠습니다..
동일한 토큰인데 왜 검색이 안되는 걸까요?
위 내용 뿐만 아니라, search_analyzer로 은전한닢을 붙여보기도하고, 쿼리 질의 시 analyzer을 은전한닢으로 적용도 해봤으나, 검색이 안됩니다.
원인을 아시는 분이 계시다면, 답변 달아주시면 감사하겠습니다!!