Search
moon
sun

Amazon OpenSearch Service 고급 활용 – 자체 빌드 Nori 분석기를 통한 사용자 사전 미세 조정

URL
생성 일시
2026/10/12 10:06
최종 편집 일시
2026/10/12 10:06
태그
AWS
파일과 미디어
검색 서비스에서는 브랜드명이나 상품명처럼 해당 분야에서 사용하는 도메인 용어를 정확하게 처리하는 것이 중요합니다. 이런 용어가 의도와 다르게 분리되면 사용자가 찾는 상품을 놓치거나 관련 없는 결과가 검색될 수 있으며 점진적으로 사용자 경험 저하라는 악순환이 반복됩니다. Amazon OpenSearch Service는 커스텀 패키지를 통해 사용자 사전과 동의어 사전을 적용할 수 있습니다. 이를 활용하면 서비스에 필요한 용어를 추가하고 서로 다른 검색 […] || 검색 서비스에서는 브랜드명이나 상품명처럼 해당 분야에서 사용하는 도메인 용어를 정확하게 처리하는 것이 중요합니다. 이런 용어가 의도와 다르게 분리되면 사용자가 찾는 상품을 놓치거나 관련 없는 결과가 검색될 수 있으며 점진적으로 사용자 경험 저하라는 악순환이 반복됩니다. Amazon OpenSearch Service는 커스텀 패키지를 통해 사용자 사전과 동의어 사전을 적용할 수 있습니다. 이를 활용하면 서비스에 필요한 용어를 추가하고 서로 다른 검색 표현을 연결할 수 있습니다. 다만, 기본 Nori 형태소 분석기를 베이스로 사용하기 때문에 커스텀 패키지의 사용자 사전 설정만으로는 용어별 품사 태그를 지정하거나 토큰별 가중치에 해당하는 형태소 분석시 Term별 비용을 세밀하게 조정하는 데 제약이 있습니다. 이 글에서는 MeCab-Ko를 직접 빌드하고, 사전의 품사와 단어 비용, 복합명사 분해 정보를 조정하는 방법을 소개합니다. 수정한 사전을 Nori 플러그인으로 빌드하여 Amazon OpenSearch Service 커스텀 플러그인으로 만들고, 상품명 예제로 기본 Nori와 분석 결과를 비교합니다. 솔루션 개요 그림 1. 같은 CSV와 정의 파일을 MeCab 검증과 Lucene Nori 사전 생성에 각각 사용합니다. 생성한 ZIP은 커스텀 도메인 B에 연결하고, 기본 Nori를 사용하는 도메인 A와 같은 입력을 분석합니다. 이 글에서 제공되는 샘플 코드는 커스텀 Nori를 빌드하는 데 초점을 맞추었습니다. 로컬에서는 MeCab-Ko 엔진과 사전, Lucene Nori JAR, 플러그인 ZIP을 생성합니다. 빌드 시 내려받는 OpenSearch 소스는 버전과 빌드 호환성을 확인하기 위한 것이며, 검색 요청은 Amazon OpenSearch Service에서 실행합니다. 비교에는 이미 준비된 도메인 두 개를 사용합니다. 구분 도메인 A 도메인 B 역할 기본 Nori 비교군 커스텀 Nori 적용군 엔진 OpenSearch 3.5 OpenSearch 3.5 tokenizer nori_tokenizer nori_custom_tokenizer 사전 AWS 제공 Nori 사전 이 글에서 빌드한 상품 사전 연결할 플러그인 AWS 제공 Nori analysis-nori-commerce A에 커스텀 플러그인을 설치하거나 B에 기본 Nori를 추가할 필요는 없습니다. 이미 설치된 플러그인은 그대로 두고, 각 도메인에서 사용할 tokenizer를 명시합니다. 비교할 문장, 분해 모드와 필터 조건은 같게 유지합니다. 사전 준비 버전과 로컬 도구 예제 코드는 AWS 한국어 기술 블로그 샘플 저장소의 opensearch_custom_nori_build에 있습니다. 구성요소 예제 버전 OpenSearch 3.5.0 Lucene 10.3.2 MeCab-Ko 엔진 0.996-ko-0.9.2 mecab-ko-dic 2.1.1-20180720 빌드 JDK 21 보조 스크립트 Python 3.12 OpenSearch 3.5.0 소스의 Lucene 의존성은 10.3.2입니다. 다른 OpenSearch 엔진 버전을 사용한다면 대상 버전의 의존성을 확인하고 플러그인을 다시 빌드해야 합니다. 이 글의 로컬 빌드는 macOS에서 검증했습니다. Homebrew와 Xcode Command Line Tools를 준비합니다. Command Line Tools가 없다면 xcode-select --install로 설