lucene 으로 검색사이트 만들기 - 1 (개요편)
이번에는 lucene 을 이용해 검색엔진의 작은 구성부터 검색 웹사이트까지 만들어보는 내용을 다룰려고 합니다.
밑에 순서대로 진행될 겁니다.
1. 개요편
2. 색인편
3. 검색편
4. 사이트편
5. 심화편
먼저 개요를 시작하겠습니다.
lucene이란, 색인엔진과 검색엔진에 대해 간단한 API를 제공해주는 도구라고 보시면 됩니다.
아래 그림과 같이 색인엔진은 인덱싱을 통해서 색인 저장소에 색인들을 저장합니다. 검색엔진은 색인 저장소에 있는 색인을 검색합니다.
환경만들기
Tomcatv8.5, Eclipse jee 2018-09 환경에서 작업하시는 걸 추천합니다.
그리고 java 환경에서 lucene을 쓰려면 아래와 같은 파일들이 필요합니다. 꼭 프로젝트에 추가한 후 Add BuildPath 해주세요.
중요한 개념들
- 인덱싱 과정에 핵심 클래스들:
Document And Field
Document는 문장이라고 보시면 됩니다. 좀 더 자세히 말하자면 Document는 Field의 집합이고 데이터를 기록합니다.
Field는 Document 의 Description을 저장합니다.
Analyzer
문자열을 여러 단어로 나누는 걸(分词) 담당합니다. 이는 인덱싱 전에 진행됩니다. Analyzer에서 얻은 결과는 IndexWriter로 넘어갑니다.
ex)
Analyzer analyzer=new StandardAnalyzer();
//StrandardAnalyzer는 자주 쓰이는 Analyzer입니다.
IndexWriter
인덱싱 과정에서 핵심 컴포넌트. 새로운 색인을 만들어서 이미 존재하는 색인저장소에 추가시킵니다.
Directory
추상클래스입니다. Lucene 색인의 위치를 나타냅니다. 즉 색인저장소라고 봐도 무방합니다.
Directory는 두 종류가 있습니다:
FSDirectory 는 파일시스템에서 위치를 나타냄.
RAMDirectory는 메모리(RAM)에서 위치를 나타냄.
- 검색 과정에 핵심 클래스들:
IndexSearcher
IndexWriter에서 작성한 색인에서 검색한다.
Term
검색기능의 기본적인 요소, 앞에 나온 Field와 비슷하다. 여기에 검색 조건을 넣을 수 있다.
Query
검색 인터페이스.
TermQuery
Lucene이 제공하는 가장 기본적인 검색종류
TopDocs
기본적인 포인터 용기, 포인터들은 보통 검색결과 탑N 을 가리킵니다. 검색결과는 DocumentID입니다.
사진과 내용 출저:
https://blog.csdn.net/zyw0929/article/details/81232946
https://www.cnblogs.com/skyme/archive/2012/07/30/2615054.html