검색엔진의 원리와 Lucene

Posted 2008/01/02 23:45

1.    

  검색 엔진 개발에 앞서 검색 엔진의 작동원리 및 Open Source Lucene의 기능을 검토하여 적용 가능성 여부와 기능을 파악하고 앞으로의 개발 방향에 대하여 정리한다.

 

2.   검색 엔진의 작동 원리

1)   Crawler의 정보 수집

-       스파이더(spider) 혹은 크롤러(crawler)라고 불리는 로봇이 웹에 있는 웹 페이지를 방문해서 모든 내용을 읽어온다. 이 때 그 페이지만 방문하고 마는 것이 아니라 그 페이지에 링크되어 있는 또 다른 페이지를 차례대로 방문한다.

사용자 삽입 이미지




-       DB에 수집해온 그대로 저장하는 것이 아니라 검색에 적합하도록 일정한 가공을 거친다. DB에 저장되는 내용에는 문서의 제목, 본문, 링크 그리고 문서가 웹에서 차지하는 중요도 등이 있다.

 

2)   수집한 문서 가공과 색인 작업

-       검색엔진에서 가장 중요한 부분으로써 좋은 검색엔진을 만들기 위해 핵심이 되는 부분이다.

-       한글문서를 색인하고자 할 경우 얼마나 좋은 형태소 분석기를 가지고 있느냐가 색인 DB의 품질을 결정하게 된다.

-       먼저 수집된 문서를 적절하게 형태소 분석을 통하여 단어로 쪼갠다.

-       검색어의 빈도수와 위치(제목, 본문)등을 고려하여 중요도를 계산하여 이를 반영한다.

 

3)   정보 검색기

-       사용자가 입력한 검색어를 색인기에 넣어 색인어를 추출하고 그것을 사용하여 검색을 한다.

사용자 삽입 이미지




3. Lucene

사용자 삽입 이미지

1)   Lucene 소개

-       아파치 최상위 Project중에 하나로 http://lucene.apache.org에서 접할 수 있다.

-       Lucene은 강력한 기능뿐만 아니라 간단하기 때문에 IT업계에서 많이 사용된다.

-       루씬은 확장 가능한 고성능 정보검색(IR, Information Retrieval) 라이브러리이다. 루씬은 소프트웨어 프로그램에 색인과 검색 기능을 간단하게 추가할 수 있도록 지원한다.

-       루씬을 사용할 때 검색에 대한 전문적인 지식을 반드시 알 필요는 없다. 꼭 필요한 몇 가지 기본 클래스들을 사용하는 방법만 익히면 색인과 검색 기능을 직접 추가할 수 있다.

-       루씬은 독립 프로그램이 아닌 단순한 소프트웨어 라이브러리이다.

-       루씬은 프로그램에 텍스트 색인과 검색 기능을 추가할 수 있도록 지원한다.

 

2)   Doug Cutting(루씬의 창시자)이 제시한 lucene의 인덱싱과 검색을 적용 가능한 사례들

-       이메일 검색 : 저장된 메시지를 검색할 수 있고 새로 도착한 메시지를 색인에 추가할 수 있는 이메일 어플리 케이션

-       온라인 문서 검색 : 온라인 문서 또는 저장된 출판물을 검색할 수 있는 CD기반이나 웹 기반 또는 어플리케이션에 포함된 문서 판독기

-       웹 페이지 검색 : 사용자가 방문한 모든 웹 페이지를 색인화하기 위해 개인 검색 엔진을 만들 수 있는 웹 브라우저 또는 프록시 서버.

-       내용 검색 : 저장된 문서에서 특정 내용을 검색할 수 있는 애플리케이션.

-       버전 관리 및 컨텐트 관리 : 문서나 문서 버전을 색인화해서 쉽게 검색할 수 있는 문서 관리 시스템.

-       뉴스 및 유선(wire) 서비스 : 뉴스가 도착했을 때 기사를 색인할 수 있는 뉴스 서버나 릴레이 서버.

☞ Lucene을 사용하여 개발할 수 있다는 의미임. 각각에 대한 전용 라이브러리를 지원한다는 의미가 아님.


 

3)   Lucene을 사용했을 때의 모형도