Elasticsearch 상황에 따른 검색 노출 비노출

JunMyung Lee·2024년 4월 7일
1

Elasticsearch

목록 보기
35/41

서비스를 운영 중에, 특정 상황에 대해서 검색이 안되는 이슈가 발생했고, 해당 상황을 조사하는 내용을 정리하고자 한다.
검색어는 에어텔이며 에어텔이 포함된 몇몇 문서가 검색이 되질 않았다.

상황

  • 사용자사전 미등록 상태
  • 에어텔이 포함된 모든 문서가 노출이 안되거나, 모두 노출이 되어야 하는데 일부만 노출됨
    에어텔 ~~로 시작되는 문서는 노출
    ~~ 에어텔로 종료되는 문서는 비노출

조사

미노출 문서 분해 결과 에어텔 부분:

{
    "token" : "에",
    "start_offset" : 19,
    "end_offset" : 20,
    "type" : "word",
    "position" : 12
},
{
    "token" : "어",
    "start_offset" : 20,
    "end_offset" : 21,
    "type" : "word",
    "position" : 13
},
{
    "token" : "텔",
    "start_offset" : 21,
    "end_offset" : 22,
    "type" : "word",
    "position" : 14
}

노출 문서 분해 결과 에어텔 부분:

{
    "token" : "에어",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 0
},
{
    "token" : "텔",
    "start_offset" : 2,
    "end_offset" : 3,
    "type" : "word",
    "position" : 1
}

검색어 분해결과 에어텔 부분:

{
    "token" : "에어",
    "start_offset" : 0,
    "end_offset" : 2,
    "type" : "word",
    "position" : 0
},
{
    "token" : "텔",
    "start_offset" : 2,
    "end_offset" : 3,
    "type" : "word",
    "position" : 1
}

결과

분해결과를 통해, 분석이 다르게 되고 있음을 알 수 있다. 노출이 되고 안되고의 가장 큰 차이는 문서의 에어텔위치가 앞에 있거나 뒤에 있거나의 차이이다.
확인 결과, 에어텔이 뒤에 있고, 그 앞의 단어가 명사가 올 경우, 에어텔의 에[~~에] 형태인 전치사(J)로 분해가 되어 버린다.

상황에 따라 감탄사(IC)로도 분해가 된다.

즉, 앞 단어가 명사대명사로 인식하게 되면 에어텔은 [에, 어, 텔]로 분해가 이루어지게 되고, 앞 단어가 알수없는(Unknown) 경우 에어텔이 분해의 첫단어로 인식이 되어 [에어, 텔]로 분해가 되는 것이다.

호텔 에어텔호텔(NNG) + 에(J) + 어(IC) + 텔(NNG)
컄향 에어텔컄향(UNKNOWN) + 에어(NNG) + 텔(NNG)

profile
11년차 검색개발자 입니다. 여러 지식과 함께 실제 서비스를 운영 하면서 발생한 이슈에 대해서 정리하고 공유하고자 합니다.

0개의 댓글