본문 바로가기

Lucene

[about Lucene] 루씬으로 검색엔진 개발하기 -Prologue-

최근들어 루씬에 대해서
개인적으로 혹은 블로그등을 통해서
문의를 해주시는 분들이 많이 늘었습니다.

검색에 대한 관심이 커진 이유인지 잘 모르겠네요~
원래 재미있고 어려운 분야긴해서..

예전에 GS에 있을 때
루씬인액션 번역본 (1.4 기준) 책 한권을 들고
루씬으로 검색엔진을 만들어 본다고 한번 개발을 했던 (이게 벌써.. 3년 4년전이네요...)
경험과 그때 공부한 내용들을 이곳에 정리하긴 하였는데
사실 Case by Case로 작성한 포스트가 많아 처음 루씬을 접하시는 분들은
보시기가 쉽지 않으셨던 것 같습니다.

그 당시 나름 Solr에 대응한다고
Moon(ㅋㅋ)이라는 이름으로 프로젝트를 진행하였었고
한번 테스트 해볼만한 상태까지는 개발을 했었지만
외부 사정에 의해서 거기서 진행을 접을 수 밖에 없었죠.

지금 이곳 11번가에서도
개인적으로는 루씬을 사용해서 이것저것 해보고 있는 중이고
가능하면 루씬과의 연결된 끈을 놓지 않으려고 하고 있습니다.

대신 업무가 있기 때문에 깊게 파지는 못 하고 있어요..

아무튼 그때의 기억과 이곳에서의 경험을 이용하여
루씬으로 검색엔진 만들기라는 제목으로 포스트를 작성해보려고 합니다.

일단 루씬을 사용하여 기본적인 검색의 기능에
집중하려고 합니다.

검색 엔진을 만든다. 라고 하면 부딫히게 되는 몇가지 문제들이 있습니다.

1. 색인어 추출 (일명 형태소분석)
2. Ranking
3. 증분색인

등이 대표적인 문제인데요...

간단한 사전을 기반하여 사전에 등록된 키워드를 추출하는 Analyzer를 만들어 보는 것을
시작으로 이야기를 작성해보려고 합니다.

대략..
1. Analyzer
2. Indexing
3. Query 
4. Search
5. Score
6. Sort
7. MultiIndexing, MultiSearcher
8. Logging
9. HighLight
10. 그외 잡다한 지식


등이 될 것 같네요~

굉장히 긴 연재가 될 것 같기도 하고..
그당시 개발했던 소스를 지금봐도
당연히 가물가물하기도 하고.. 그때의 설계가 마음에 안들어서
다시 개발하여 이곳에 소개를 하기도 할 것 같습니다.

루씬 3.X버전을 사용하여
가능하면 필수적인 이야기들을
해보겠습니다.

다만, 컴퓨터공학을 전공하였지만
IR이 전공이 아닌지라 검색 그 자체에 대한
지식 기반은 저도 굉장히 얕습니다. 

그리고 루씬에 대해서
굉장히 뛰어난 실력을 가지신 분들도 사실 엄청 많으십니다. ^^
제가 아는 분들만 해도 루씬인액션 초판을 번역하신 강철구님이나 이문호
그리고 상당한 실력파로 보이시는 짐승님...
한글 형태소 분석기를 개발하신 이수명님..

이런 분들을 두고 글을 작성하는 것이 엄청 부담스럽기는 합니다. -_- 괜한 짓 하나 싶기도 하네요 ㅋㅋ

이 글은 오로지 루씬을 처음
사용하시는 분에 대한
가이드라인 정도를 제공해드린다고
이해해주시면 좋을 것 같습니다.


그 점은 양해를 부탁드리고..
 
음.. 이제 어떻게 쓸지 고민해봐야겠네요.. ^^;;; ㅋㅋ