루씬(Lucene) 검색 엔진의 구조 (FST, Burst Trie, 역 인덱스)
·
ElasticSearch
ElasticSearch는 아파치 루씬(Apache Lucene)이라는 검색 엔진 라이브러리를 활용해 분산 환경에서의 고성능 검색 기능을 제공한다.고성능 검색 기능은 루씬(Lucene)의 저수준 API를 조립해 REST API로 제공하는 것인데, 루씬은 어떤 방식을 사용하길래 대용량 데이터를 디스크에서 빨리 읽을 수 있는 걸까? 루씬의 구조를 파악해 보자.사전 지식 1. 역 인덱스역 인덱스는 위의 이미지처럼 Hash Table로 되어있지 않지만 단어(Term)로 문서의 아이디를 찾을 수 있는 자료구조라고 이해하자.사전 지식 2. 루씬은 최소 단위로 세그먼트를 사용한다.루씬(Lucene)은 색인의 최소 단위로 세그먼트(segment)를 사용한다. 다시 세그먼트는 여러 문서(Document)로 되어있는데,..