|
|
|
XML |
Dom, Sax, JDom, Piccolo (http://piccolo.sourceforge.net) Apache Disester (http://jakarta.apache.org/commons/digester/) |
|
|
PDFBox (http://www.pdfbox.org), IndexFiles (lucene built-in) , LucenePDFDocument (lucene built-in) Xpdf (http://www.foolabs.com/xpdf) JPedal (http://www.jpedal.org) Etymon PJ( http://www.etymon.com) |
|
Html |
Jtidy (http://jtidy.sourceforge.net ), HTMLParser( http://htmlparser.sourceforge.net) |
|
MS Word |
POI (http://jakarta.apache.org/poi ) Text Extractors( http://textmining.org ) Antiword ( http://www.winfield.demon.nl) OpenOffice SDK ( http://www.openoffice.org ) |
6) 사용 가능한 언어
- 원래 자바로 만들어진 루씬은 펄(Perl)에서 시작해 파이썬(Python), C++와 닷넷(.NET)등의 언어로 포팅돼있고, 루비(Ruby)로 포팅하기 위한 작업도 진행중이다.
- 루씬은 서로 다른 언어간에도 색인 데이터를 100% 호환해서 사용할 수 있도록 설계되어있다.
4. Nutch
1) Nutch 소개
- 광고로 뒤덮인 인터넷 검색 사이트에서 상업적인 요소를 배제하고 검색 그 자체로의 검색을 구성하고자 진행된 오픈 소스 인터넷 웹 검색엔진 프로젝트
- 루씬을 이용하여 색인과 검색을 한다.
- 너치는 수 억개 이상의 웹페이지를 긁어 모아 색인하고 검색해볼 수 있게 해준다.
- 너치 시스템은 웹에 존재하는 문서(대략 10억에서 100억 개 정도)를 처리할 수 있도록 만들어졌고, 물론 문서가 아주 많기 때문에 1대보다는 여러 대의 서버에서 색인과 검색을 동시에 가동해야 한다.
2) Nutch의 검색 구조
- 웹 서버가 사용자의 검색 요청을 받는다.
- 질의 핸들러가 검색어를 가공해서 다수의 색인 검색 서버로 전달한다.
- 질의 핸들러가 넘긴 검색어에 대해 여러 개의 색인 서버에서 결과가 나오는데 이 결과를 가장 점수가 높은 순서로 정렬한다.
- 만약 1~2초가 지난 후에 결과를 알려주지 않는 새인 서버가 있다면 결과에 포함하지 않고 무시한다. (사용자가 느끼기에 2초안에 결과가 나오도록 보장)
3) Nutch테스트
- Crawling : http://www.hufs.ac.kr
- 검색어 : hufs
5. Lucene으로 할 수 있는 일
- 내용을 검색하는 모든 분야에 Lucene을 적용할 수 있다.(우리는 Text와 Analyzer를 Lucene에 제시하면 Lucene이 Index를 구성해 준다. Lucene의 api를 사용해서 검색할 수 있다)
- 대표적으로 Desktop 검색, E-mail 검색, 웹 페이지 검색
- 문제점 : 내용을 단어로 쪼개는 방법을 구현 해야함(형태소 분석기). 간단한 형태소 분석기는 “루씬 인 액션” 책에서 소스를 공개하고 있음. 하지만 고급 형태소 분석기는 국어에 대한 이해를 기반으로 구현하는 것이 매우 어렵다고 한다.
6. 결론
- Lucene은 Full Text를 검색하는데 효율적이다.
- Full-Text(Contents)와 text를 단어로 쪼개는 방법(Analyzer)을 제시하면 알아서 Index를 구성해 주고 그것으로 빠른 검색 결과를 얻을 수 있다.
- 그러므로 내용검색을 위해서는 Lucene을 사용하면 효율적이지만 단지 Exact Match 검색을 한다면 Lucene은 불필요하다