'루씬강좌'에 해당되는 글 4

  1. 2007/08/30 루씬의 기본구조
  2. 2007/08/20 루씬으로 할수 있는것. (6)
  3. 2007/08/07 application이 아닌 library로서의 루씬
 

루씬의 기본구조

루씬강좌 | 2007/08/30 11:00 | Posted by gruter


루씬의 주요한 함수를 꼽으라면

데이터를 인덱싱하는 IndexWriter
데이타를 검색하는 IndexSearcher
데이타를 읽는 IndexReader

이 세개를 말할수 있습니다.

단순한 검색서비스를 제공하고자 한다면 IndexWriter와 IndexSearcher 이 두개만 있으면 됩니다.

이 세가지의 공통점을 꼽는다면
모두가 동일한 Directory를 바라보고 있다는 겁니다.

개별로 움직이는 것들이 하나의 Directory를 가지고 지지고 볶고 합니다.

그렇지만 이 세개는 아쉽게도 서로 사용시 Sync를 맞추지 못합니다.

동상이몽하는 셈이죠.
하나의 변경이 다른 것에 영향을 미치지 못하고 지가 보고 있는 허상만을 건들고 있다는 겁니다.

즉, IndexWriter가 인덱싱을 하는데 이넘의 IndexReader나 IndexSearcher는 그 사실을 알지 못합니다.
snapshot이라고 해야 하나요. 자기가 처음 인스턴스를 생성했을때 그 모습만을 바라보고 있습니다. 새로운 인덱싱이 추가되었는지 알지 못해요. 그래서, 데이터를 추가했는데 검색안된다고 아우성입니다.

그렇기 때문에 추가된 사항을 반영하려면 항상 필요할때마다 반복해서 인스턴스(Directory를 읽기위한)를 생성해야 합니다.

이러다 보니 실시간으로 처리하는 데이터 입출력 시스템에서는 별로 유효하지 않습니다.
엄청난 노가다를 해야 하는 셈이죠^^

참고로 이 루씬의 Directory는 하나의 문서를 표현하는 Document들로 구성되어 있으며
이 Document를 이루는 개별 필드인 Field로 구성되어 있습니다.
물론 데이터 관점에서 이런것이고 그 이외에 필요한 여러 파일들이 존재하고 있죠.

위의 3가지 IndexWriter, Reader, Searcher와 Document, Field의 개념만 알고 있어도 루씬을 사용하는데 아무런 지장이 없습니다.

문제는 많은 분들이 위에서 지적한 snapshot의 원리를 기억하지 못하고 헤멘다는 겁니다.^^

루씬으로 할수 있는것.

루씬강좌 | 2007/08/20 16:00 | Posted by gruter



루씬으로 pdf, hwp, doc 파일을 검색할수 있나요?
없습니다. 불가능합니다.

루씬으로 DB검색할수 있나요?
불가능합니다.

루씬으로 웹검색을 할수 있나요?
NO..

그럼 도대체 뭘 할수 있나요?

검색을 할수 있습니다.
pdf던, hwp, doc 문서던
DB던 이것을 읽어 TEXT로 변환시킬수 있는 GATE만 만들수 있다면
루씬은 원하는 검색을 할수 있습니다.
크롤을 별도로 만들면 웹문서 검색도 할수 있습니다.

루씬은 들어오는 TEXT를 인덱싱하고 해당 인덱싱중 원하는 키워드를 포함하는 TEXT를 찾아주는 Library입니다.

이렇게 보면 별것 아니죠?
사실 별것 아녀요.^^

그렇지만 반대로 생각하면
GATE만 만들게 되면 검색에 관한 모든것을 해결해 줄수 있는 막강 검색엔진의 역할을 할수 있습니다.

하면 할수록 그 깊이가 의심(?)되는 루씬의 세계로 가봅시다.


사용자 삽입 이미지


출처 :http://www-128.ibm.com/developerworks/library/wa-lucene/indexing_architecture.gif

application이 아닌 library로서의 루씬

루씬강좌 | 2007/08/07 13:52 | Posted by gruter


루씬을 접하면서 많이들 잘못생각하는 것중의 하나가
루씬이 이미 잘 만들어진 제품(application)으로 착각하는 것입니다.

루씬은 검색엔진제품을 만들어주는 기반이 되는 Library이지 이미 만들어진 제품이 아닙니다.
제품의 영역은 개발자 자신이 얼마나 해당 Library를 잘 이해하고 접목하느냐의 능력에 달려 있습니다.

그렇기 때문에 "공짜야"하면서 달려든 루씬 사용자들은 그 검색엔진의 깊이를 감당하지 못하고 나자빠집니다.

lucene library와 search application과의 관계를 간략히 도식화 하면 다음과 같습니다.
(출처 : http://www.webreference.com/programming/lucene/fig1-5.jpg)
사용자 삽입 이미지

그렇기 때문에
동일한 제품을 만들더라도 그 제품을 만드는 모든 개발자가 좋은 제품을 만드는 것이 아니듯
루씬에 대한 이해와 활용능력에 따라 검색엔진(서비스)의 품질도 달라집니다.

그래서 루씬도 공부 많이 해야합니다.^^