lucene_색인 만들기
색인 만들기
문서의 인덱싱을 위해 Lucene은 Document, Field, IndexWriter, Analyzer, Directory 등 다섯 가지 기본 클래스를 제공합니다.다음은 다섯 가지 유형의 용도에 대해 살펴보겠습니다.
Document
Document는 문서를 설명하는 데 사용됩니다. 이 문서는 HTML 페이지, 전자메일, 또는 텍스트 파일을 가리킬 수 있습니다.하나의 Document 객체는 여러 개의 Field 객체로 구성됩니다.하나의 Document 대상을 데이터베이스에 기록된 것으로 상상할 수 있으며, 각각의 Field 대상은 기록된 필드이다.
Field
Field 객체는 한 문서의 등록 정보를 설명하는 데 사용됩니다. 예를 들어 이메일의 제목과 컨텐트는 두 개의 Field 객체로 각각 설명할 수 있습니다.
Analyzer
문서가 인덱스되기 전에 먼저 Analyzer가 문서 내용을 분사 처리해야 합니다.Analyzer 클래스는 여러 가지 구현이 있는 추상 클래스입니다.다양한 언어와 애플리케이션에 적합한 Analyzer 를 선택해야 합니다.Analyzer는 분사 후의 내용을 인덱스에 넘겨 색인을 만듭니다.
IndexWriter
IndexWriter는 루틴이 색인을 만드는 데 사용하는 핵심 클래스입니다. 루틴의 역할은 하나의 Document 대상을 색인에 추가하는 것입니다.
Directory
이 클래스는 루틴의 인덱스가 저장된 위치를 나타낸다. 이것은 추상적인 클래스로 현재 두 가지가 실현되고 있다. 첫 번째는 FSDirectory이다. 이것은 파일 시스템에 저장된 인덱스의 위치를 나타낸다.두 번째는 RAMDIrectory입니다. 메모리에 저장된 인덱스의 위치를 표시합니다.
public class TxtFileIndexer {
public static void main(String[] args) throws Exception{
//indexDir is the directory that hosts Lucene's index files
File indexDir = new File("D:\\luceneIndex");
//dataDir is the directory that hosts the text files that to be indexed
File dataDir = new File("D:\\luceneData");
Analyzer luceneAnalyzer = new StandardAnalyzer();
File[] dataFiles = dataDir.listFiles();
IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
long startTime = new Date().getTime();
for(int i = 0; i < dataFiles.length; i++){
if(dataFiles[i].isFile() && dataFiles[i].getName().endsWith(".txt")){
System.out.println("Indexing file " + dataFiles[i].getCanonicalPath());
Document document = new Document();
Reader txtReader = new FileReader(dataFiles[i]);
document.add(Field.Text("path",dataFiles[i].getCanonicalPath()));
document.add(Field.Text("contents",txtReader));
indexWriter.addDocument(document);
}
}
indexWriter.optimize();
indexWriter.close();
long endTime = new Date().getTime();
System.out.println("It takes " + (endTime - startTime)
+ " milliseconds to create index for the files in directory "
+ dataDir.getPath());
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.