검색엔진에서 색인(Index)이란?

Posted by 황희정 on November 8, 2017

검색엔진에서 색인(Index)이란?

색인(Index)이란 검색을 빠르게 하기 위해 데이터를 저장하는 장소라 할 수 있습니다. 만약 색인의 과정이 없다면, 검색엔진은 모든 문서에서 찾아야 할 것이고, 이렇게 하면 시간이 많이 들고 메모리 소모도 심할 것입니다.

예를 하나 들어보도록 하겠습니다. 도서관에서 ‘홍길동’이라는 책을 도서관에서 어떻게 보관해야 해야할까요? 만약 홍길동이라는 책을 아무곳에나 두면 나중에 책을 찾으려 할 때 수많은 책 중에서 찾으려고 하면 찾기는 매우 어려울 것이고, 많은 시간이 걸릴 것입니다. 하지만, 소설이라는 분류에 홍길동이라는 책을 보관한다면 전체 책을 검색하지 않더라도, 책을 빠르게 찾을 수 있을 것입니다. 이렇게 책을 보관하듯, 특정 장소(문서)에 데이터를 저장하는 과정을 색인(인덱싱, indexing)이라 합니다.

find book에 대한 이미지 검색결과

검색 엔진 아키텍쳐마다 데이터를 색인하는 과정에 대한 설계는 다양합니다. 오픈소스 검색 엔진인 아파치 루씬(Apache Lucene)의 경우, 역색인(Inverted index)라는 색인 데이터 구조를 가집니다. 아파치 루씬(Apache Lucene) 기반의 검색 엔진인 아파치 솔라(Apache Solr), 엘라스틱 서치(Elasticsearch)에서 이와 같은 구조를 활용하고 있습니다.

apache lucene에 대한 이미지 검색결과

elasticsearch에 대한 이미지 검색결과

아파치 루씬(Apache Lucene)에서 색인이 이루어지는 과정과 역색인(inverted index)에 대해서는 더 자세한 내용은 다음에 다루도록 하겠습니다^^

  • english version :

https://heejunghwang.github.io/blog/main/2017/11/07/index-in-searchEngine.html