- 동의어 사전에 브랜드 한글 이름, 영문 이름을 등록하려고 하는데 인덱싱이 안된다.
- 불용어 규칙때문인지 인덱싱이 안된다.(근데 불용어 규칙이 적용되기 전 인데, 아닌것 같은데)
- 토크나이저 때문인가
- 일단 삑나는 브랜드명 예시 적어놓기
- 빈앤유 → 비
- 솔트인이어 → 이
- 멀릭 → 멀
- 레브드제이 → 들
- 플로움 → 롭
- 제인트 → 저
- 이어리 → 이
- 미드나잇모먼트 → 미드
- 저인트 → 저이
- 사용사 사전에서 토크나이징 안되게 막아놓으면 괜찮긴한데, 원인을 모르겄네
토크나이징 쿼리
GET test-store-v7/_analyze
{
"tokenizer": "korean",
"text": "플로움"
}
- 현재 korean 토크나이저는 nori_tokenizer라는 형태소 분석기를 사용하고 있다.
- korean 토크나이저에서 decompound_mode 수정해가면서 테스트 해보도록 한다.
decompound_mode : 복합명사를 토크나이저가 처리하는 방식
- none : 어근을 분리하지 않고 완성된 합성어만 저장합니다.(ex. 합정역 -> 합정역)
- discard (디폴트) : 합성어를 분리하여 각 어근만 저장합니다. (ex. 합정역 -> 합정, 역)
- mixed : 어근과 합성어를 모두 저장합니다. (ex. 합정역 -> 합정, 역, 합정역)
- decompound_mode = mixed (인덱싱 에러날때 현재 설정)
- "플로움" 토크나이징할때 롭(?) 이거는 왜 나오는거지
{ "tokens" : [ { "token" : "플", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 0 }, { "token" : "로움", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 1, "positionLength" : 2 }, { "token" : "롭", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 1 }, { "token" : "ᄆ", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 2 } ] }
- decompound_mode = none
{ "tokens" : [ { "token" : "플", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 0 }, { "token" : "로움", "start_offset" : 1, "end_offset" : 3, "type" : "word", "position" : 1 } ] }
- decompound_mode = discard
{ "tokens" : [ { "token" : "플", "start_offset" : 0, "end_offset" : 1, "type" : "word", "position" : 0 }, { "token" : "플롭", "start_offset" : 0, "end_offset" : 3, "type" : "shingle", "position" : 0, "positionLength" : 2 }, { "token" : "플롭ᄆ", "start_offset" : 0, "end_offset" : 3, "type" : "shingle", "position" : 0, "positionLength" : 3 } ] }
- nori_tokenizer는 사전 기반으로 토큰나이징을 하는거로 알고 있는데, 외래어는 사전에 등록되어있지 않아서 decompound_mode=mixed할때 원형 보존이 안되는듯하다 (브랜드 이름은 외래어가 많다)
- 그래서 사용자 사전에 브랜드 이름을 등록해서 이상하게 토크나이징이 안되도록 했다.
- 아직 토크나이징이 이상하게 되는거 원인을 못찾았으니 나중에 알게되면 내용을 더 채우도록 하겠다.