데브허브 | DEVHUB | Elasticsearch 입문·실전 - 3.10. [실습] 검색할 때 필요없는 불용어(a, an, the, or, but) 제거하기 (stop)Elasticsearch 입문·실전 - 3.10. [실습] 검색할 때 필요없는 불용어(a, an, the, or, but) 제거하기 (stop)
- 불용어(stop words)는 'a', 'an', 'the' 등과 같이 큰 의미가 없어 역인덱스 저장 효율을 위해 제거하는 단어입니다. 🗑️
- Elasticsearch에서 불용어를 제거하려면
settings에 custom analyzer를 정의해야 합니다. 🛠️
- 커스텀 애널라이저 구성 시
filter 목록에 stop 필터를 추가하여 불용어를 제거하도록 설정합니다. 🛑
mappings의 properties에서 특정 필드(예: content)에 정의한 custom analyzer를 적용하도록 명시합니다. 📝
- 실습에서는 기존 인덱스를 삭제하고,
stop 필터가 적용된 커스텀 애널라이저를 포함한 새 인덱스를 생성한 후, 불용어가 포함된 데이터를 삽입하여 불용어 검색 시 결과가 나오지 않음을 확인했습니다. 🧪
_analyze API를 사용하여 특정 필드에 적용된 애널라이저가 텍스트를 어떻게 토큰화하는지 확인하고, 불용어가 실제로 제거되었음을 검증할 수 있습니다. 🔬
- 불용어 제거는 역인덱스 공간을 절약하고 검색 효율성을 높이는 장점이 있습니다. 🚀
- 하지만 'Let It Be'와 같은 노래 제목처럼 불용어가 의미를 구성하는 중요한 요소일 경우,
stop 필터를 적용하면 검색 정확도가 떨어질 수 있으므로 주의해야 합니다. ⚠️
- 따라서
stop 필터의 적용 여부는 데이터의 특성과 검색 목적에 따라 신중하게 판단하여 결정해야 합니다. ⚖️