← 학습 카테고리

Learn

Elasticsearch

50개 모듈 · 현재 22번째

Elasticsearch 모듈 22/50 elasticsearch-learn-22

동의어(Synonym) 필터 — 규칙 문법, 적용 시점, 그리고 synonym_graph가 필요한 이유

Elasticsearch Runtime Fields 및 Synonym 필터 공식 문서 종합 (웹 리서치, 2026) — Elastic 공식 문서(manage-data/data-store/mapping/runtime-fields, reference/text-analysis/analysis-synonym-graph-tokenfilter) Elastic 공식 문서 Synonym graph token filter

이 모듈을 다 읽으면

  • 동의어 규칙의 두 가지 형식(동등 관계 vs 명시적 매핑)을 구분해 설명할 수 있다
  • 동의어를 검색 시점에 적용하는 것이 권장되는 이유와, 다중 단어 동의어에 synonym_graph가 필요한 이유를 설명할 수 있다

elasticsearch-learn-03에서 다룬 analyzer 파이프라인의 토큰 필터 개념을 전제로, 서로 다른 단어를 같은 의미로 취급해 검색 재현율을 높이는 synonym 계열 토큰 필터의 규칙 문법과 적용 시점 선택을 정리한다.

규칙 문법 — 동등 관계 vs 명시적 매핑

동의어 규칙은 두 가지 형식으로 정의한다 — (1) 'ipod, i-pod, i pod'처럼 쉼표로 나열한 동등(equivalent) 형식은 나열된 단어들을 서로 완전히 교환 가능한 것으로 취급하고, (2) 'personal computer => pc'처럼 화살표로 표시하는 명시적(explicit) 매핑은 왼쪽의 여러 표현을 오른쪽의 특정 단어로 일방향으로 변환한다. 전자는 '이 단어들은 다 같은 뜻'이라는 대칭적 관계를, 후자는 '이 표현이 나오면 이 형태로 통일해서 취급'이라는 비대칭적 정규화를 표현한다는 차이가 있다.

핵심 포인트

  • 동등 형식(예: 'ipod, i-pod, i pod'): 나열된 단어들을 대칭적으로 서로 교환 가능하게 취급
  • 명시적 매핑(예: 'personal computer => pc'): 왼쪽의 여러 표현을 오른쪽 형태로 일방향 정규화

왜 검색 시점(search-time) 적용이 권장되는가

동의어는 색인 시점(index-time)에 적용할 수도, 검색 시점(search-time)에만 적용할 수도 있다 — synonym_graph 필터는 애초에 검색 analyzer 전용으로 설계돼 있어(색인 시점에 쓰려면 기본 synonym 필터를 써야 한다), 검색 시점 적용이 일반적으로 권장된다. 그 이유는 동의어 목록이 바뀌어도(신규 은어·브랜드명 추가 등) 기존에 색인해둔 문서를 재색인할 필요 없이 검색 analyzer 설정만 갱신하면 되기 때문이다 — 사용자 행동 데이터를 보고 동의어 목록을 계속 다듬어가는 운영 유연성이 재색인 비용 없이 확보된다.

핵심 포인트

  • synonym_graph는 검색 analyzer 전용 설계 — 색인 시점 적용에는 기본 synonym 필터를 써야 함
  • 검색 시점 적용이 권장되는 이유: 동의어 목록이 바뀌어도 재색인 없이 검색 analyzer 설정만 갱신하면 되는 운영 유연성

다중 단어 동의어에는 synonym_graph가 필요한 이유

기본 synonym 필터는 'sea biscuit'처럼 여러 단어로 이뤄진 복합어 동의어를 정확히 처리하는 데 한계가 있다. synonym_graph 필터는 처리 과정에서 그래프 형태의 토큰 스트림을 만들어, 토큰들의 위치 정보를 보존한 채로 다중 단어 동의어를 정확히 매칭할 수 있게 해준다 — 이게 단일 단어 동의어만 다루는 기본 필터로는 안 되는 부분이다. 다만 synonym_graph 필터를 여러 개 체이닝하면 검색 시점 동작이 예측 불가능해질 수 있어, 공식 문서는 체이닝 대신 하나의 필터 안에 여러 동의어 세트를 함께 넣는 방식을 권장한다.

핵심 포인트

  • 기본 synonym 필터는 다중 단어(복합어) 동의어를 정확히 처리하기 어려움
  • synonym_graph는 그래프 토큰 스트림으로 위치 정보를 보존해 다중 단어 동의어를 정확히 매칭 — 단, 여러 개 체이닝은 예측불가 동작을 유발해 하나의 필터에 여러 세트를 함께 넣는 게 권장됨