전문 검색 원리
원본 보기전문 검색 원리
다음 다이어그램은 전문 검색의 구성 요소를 보여줍니다.
전문 검색은 크게 다음과 같은 과정으로 이루어집니다.
- 텍스트 분석: 분석은 순차적인 변환 과정의 파이프라인으로 구성됩니다. 어간 추출, 소문자 변환, 불용어 제거 같은 기법을 통해 텍스트가 검색에 최적화된 형태로 변환됩니다. Elasticsearch에는 특정 언어의 텍스트를 분석하는 옵션을 포함해 다양한 내장 애널라이저와 토크나이저가 들어 있습니다. 커스텀 애널라이저를 만들 수도 있습니다.
팁
애널라이저를 테스트하고 그것이 생성하는 토큰과 메타데이터를 확인하는 방법은 애널라이저 테스트를 참고하세요.
역색인 생성: 분석이 끝나면 Elasticsearch는 그 결과로 나온 토큰으로 역색인을 만듭니다. 역색인은 각 토큰을 해당 토큰이 포함된 문서에 매핑하는 자료 구조입니다. 두 가지 핵심 구성 요소로 이루어집니다.
- 사전(Dictionary): 인덱스에 있는 문서 집합의 모든 고유 용어를 정렬한 목록입니다.
- 포스팅 리스트(Posting list): 각 용어에 대해 그 용어가 나타나는 문서 ID 목록이며, 용어 빈도나 위치 같은 선택적 메타데이터가 함께 저장됩니다.
관련성 점수 산정: 결과는 주어진 쿼리와 얼마나 관련이 있는지에 따라 순위가 매겨집니다. 각 문서의 관련성 점수는
_score라는 양의 부동소수점 숫자로 표현됩니다._score가 높을수록 문서의 관련성이 높습니다.Elasticsearch가 관련성 점수 계산에 사용하는 기본 유사도 알고리즘은 TF-IDF 알고리즘의 변형인 Okapi BM25입니다. BM25는 용어 빈도, 문서 빈도, 문서 길이를 기반으로 관련성 점수를 계산합니다. BM25를 자세히 알아보려면 이 기술 블로그 글을 참고하세요.
전문 검색 쿼리: 쿼리 텍스트는 색인된 텍스트와 동일한 방식으로 분석되며, 그 결과로 나온 토큰이 역색인을 검색하는 데 사용됩니다.
Query DSL은 다양한 전문 쿼리를 지원합니다.
8.17부터 ES|QL도 전문 검색 함수를 지원합니다.