본문 바로가기

Java

[Java] Map과 List로 검색엔진 구현해보기 -1-

회사에서 검색 파트를 맡고 있으면서
신규로  검색 파트로 들어오는 후배들 교육을 위해 만들었던
예제 소스입니다.

검색이 역인덱스 구조로 되어있고 대략 이런이런 형태로 검색과 색인이 된다..
말로 설명을 하는 것 보다 간단하게 직접 자료구조를 구현해 보는 것도
도움이 될 것 같아서 만들었었습니다.

실제로 자료구조의 구현이라하면 굉장히 어려운데
교육 목적이었기 때문에 자료구조라 부르기도 민망 할 정도로
간략화 시켰습니다. 

검색 엔진의 구현이라고 하였지만 사실
키워드 추출/ 키워드를 통한 색인 및 검색으로 한정지어 간략화시켰기 때문에
검색엔진을 만드는데 있어서 필요한 다른 고려 사항은 하나도 들어가 있지 않습니다.

역인덱스 구조를 Map과 List로 간단하게 구현하였고 (Map의 Key가 키워드, Value가 Document의 ROWID를 담고 있는
List가 되겠죠) 색인/검색/키워드 분석의 예제를
초!! 간략화하여 만들었습니다.

기본적인 API만 사용했기 때문에
자바에 대한 공부에도 도움이 될 것이라 생각합니다.

문장으로부터 키워드를 추출하는 Analyzer와
원문 데이터를 가지고 있는 Repository
색인 데이터를 가지고 있는 IndexFile
검색을 수행하는 Searcher로 구성되어있는 예제입니다.

한번 들어가보겠습니다.