LINE Plus의 통합 커머스 프로젝트에서 일본어 상품 검색 엔진을 Elasticsearch + Kuromoji에서 OpenSearch + Sudachi로 전환한 사례다. 신조어·복합어 미인식과 모델번호 표기 다양성 문제를 해결하기 위해 형태소 분석기를 교체하고 멀티 필드 전략을 설계했다.
핵심 포인트- Kuromoji(IPADIC 2007년 사전)는 신조어·복합어를 과도 분해해 'スマートフォンケース'를 4개 토큰으로 쪼갰다. Sudachi C 모드는 의미 단위로 유지해 2개로 처리한다.
- OpenSearch 2.15.0이 Sudachi를 공식 지원해 EOL 예정이던 Elasticsearch 7.10.2와 함께 인프라도 교체했다.
- 모델번호 표기 다양성('AW-10DP3', 'AW_10DP3', 'aw10dp3')을 compact_product_name_analyzer로 동일 토큰으로 수렴시켰다.
- 상품 인덱스(8억 건)에는 인덱스 크기 위험으로 Edge N-gram을 미적용하고, 카탈로그 인덱스(1억 건)에만 적용해 자동완성을 지원한다.
- 검색 모드를 인덱스별·목적별로 분리했다: 상품 인덱스는 PARTIAL/PHRASE_EXACT_LIKE/EXACT, 카탈로그는 PHRASE/MATCH/EDGE/EXACT.
상세 정리- 문제 발단: 특정 단어로 검색하면 결과가 없다는 보고. 사용자 사전 수동 추가로 임시 대응했으나 신조어·복합어가 지속 발생해 근본 해결이 필요했다.
- Kuromoji 한계: IPADIC 2007년 8월 버전이라 최신 IT 용어·제품명을 미포함. 2001년 등록된 쌀 품종 'こしいぶき'도 미인식. 기본 설정 그대로 사용해 상품명 특성에 맞는 튜닝이 없었다.
- Sudachi 선택: C 모드로 복합어를 의미 단위 유지, 최신 사전 기반, OpenSearch 2.6+ 공식 지원. Elasticsearch EOL과 함께 OpenSearch 2.15.0으로 전환.
- 멀티 필드 설계: 기본 필드에 sudachi_analyzer 적용. 서브 필드로 keyword(단일 토큰 정규화), compact(모델번호용), edge(자동완성용)를 추가해 검색 목적에 맞게 쿼리 라우팅.
- compact_product_name_analyzer: icu_normalizer → 구분자(하이픈/언더스코어/슬래시/나카구로) 공백 변환 → whitespace tokenizer. 형태소 분석 없이 규칙 기반으로 'AW-10DP3'와 'aw10dp3'를 동일 토큰으로 수렴. 영숫자 포함 + 길이 3 초과 시에만 활성화해 단어 짧은 검색에서 노이즈 방지.
- Edge N-gram: min=2~max=10으로 "スマートフォン"을 6개 토큰 생성. constant_score로 스코어링 생략해 응답 속도 향상. 8억 건 상품 인덱스는 토큰 수 폭증으로 미적용, 정제 데이터인 카탈로그(1억 건)에만 적용.
- 검색 쿼리 설계: 상품 인덱스 PARTIAL 모드는 sudachi 필드 + compact 필드 bool.should 조합. 카탈로그 PHRASE 모드는 match_phrase + edge 보조.
- 성과: 복합어 처리 개선(4개→2개 토큰), 신조어 인식, 모델번호 표기 통일, 자동완성 구현. 현재 실서비스 운영 중이며 검색 로그 분석과 모드별 패턴 모니터링으로 지속 개선 예정.
왜 읽나다국어(특히 일본어) 검색 품질 개선이나 Kuromoji→Sudachi 전환을 검토 중인 백엔드·검색 엔지니어에게 분석기 선택 기준과 멀티 필드 전략의 실전 구현 레퍼런스를 제공한다.