3D Graphic Technical Artist

[ 루씬 스터디 7회차 ] 1장 루씬과의 첫만남 본문

업무(~2014)/Lucene

[ 루씬 스터디 7회차 ] 1장 루씬과의 첫만남

er1ca 2012. 10. 15. 22:27

2012년 10월 4일

오늘부터 본격적으로 루씬소스를 뜯어보기로 하자 'ㅅ'/

 

1장은

'루씬이 무엇인가',

'간단한 루씬 오픈소스의 클래스 설명',

'루씬과 같은 검색 라이브러리 등에 대한 소개'를 다룬다.

 

#1 루씬이란?

루씬은 확장 가능한 고성능 정보검색(IR, Information Retrieval)라이브러리이다.

루씬은 소프트웨어 프로그램에 색인과 검색 기능을 간단하게 추가할 수 있도록 할 수 있다.

즉, '비즈니스 로직' 부분은 사용자 애플리케이션을 통해 완성된다.

 

이처럼 검색 기능을 하기 위해서는 '수집', '색인', '검색' 이라는 로직을 구성해야한다.

#2 색인

검색할 내용이 많으면 검색 이전에 각각의 파일을 한번씩 읽어가면서 단어를 포함하는 문서를 찾기 위한 특별한 구조의 데이터를 만들어 저장해두는데 이러한 과정을 '색인한다(indexing)'고 하고 이때 만들어진 특별한 구조의 데이터를 '색인(index)'이라고 한다.


- 색인 주요 클래스

 1) IndexWriter 

색인 과정 전체를 총괄하는 클래스

 2) Directory

루신의 색인 파일 저장을 책임

 3) Anlyzer

텍스트의 단어를 루씬에서 활용할 수 있는 토큰(Token 클래스)으로 분리

 4) Document

색인에 추가할 데이터를 Document 단위로 처리

 5) Field

IndexWriter를 통해 색인에 추가하려는 내용은 Document 인스턴스에 Field 형태로 추가



#3 검색

검색(searching)은 색인에서 해당 단어를 찾아 어느 위치에 단어가 있는지를 알려주는 과정이다.


- 검색 주요 클래스

 1) IndexSearcher

색인을 검색할 때 검색 관련 메소드 제공

 2) Term

색인에서 단어를 의미하는 가장 기본적인 요소

 3) Query

검색어를 지정할때 Query를 사용

 4) TermQuery

특정 이름의 필드에 지정한 단어가 포함되어 있는 문서를 찾을 때 사용

 5) Hits

Query를 통해 검색한 결과는 Htis로 수집 (결과 문서에 대한 ID 목록만을 갖는다)

 


#4 다른 검색엔진

1. IR 라이브러리

1) 이고쏘

자바로 만들어짐, 루씬과 가장 비슷한 IR 라이브러리

2) 자피안

C++로 만들어진 확률 검색 기반 IR 라이브러리

3) MG4J

유비크롤러를 통해 자료수집한 후 그 자료를 관리, 분석하기 위한 도구로 만들어짐

I/O를 고속으로 처리하는모듈, 역파일 색인을 구성하는 모듈 등을 가짐

 

2. 색인/검색 소프트웨어

색인이나 검색의 성능을 높이거나 사용자 별로 다른 환경이나 요구 사항을 맞추기 위한 변수의 값을 지정할 수 있지만 소프트웨어에 검색 기능을 추가하기에는 적절하지 않다.

1) SWISH, SWISH-E, SWISH++

2) 웰글림스, 글림스

3) 나마주

4) ht://Dig

5) 하비스트, 하비스트-NG(Harvest-NG)

6) 마이크로소프트 인덱스 서버

7) 베리티

 

3. 그 밖의 정보

1) 디모즈

2) 구글

3) 서치툴즈