lucene in action 노트 의 색인
가장 간단 한 색인 과정 을 실행 하 는 데 필요 한 몇 가지 종류: IndexWriter, Directory, Analyzer, Document, Field.간단 한 예 는 다음 과 같다.
public static int index(File indexDir, File dataDir)
throws IOException {
if (!dataDir.exists() || !dataDir.isDirectory()) {
throw new IOException(dataDir
+ " does not exist or is not a directory");
}
if (dataDir.isHidden() || !dataDir.canRead()||!dataDir.getName().endsWith(".txt")) {
throw new IOException(dataDir
+ " error!");
}
IndexWriter writer = new IndexWriter(indexDir,
new StandardAnalyzer(), true);
writer.setUseCompoundFile(false);
// IndexWriter's setUseCompoundFile(true) , 。
System.out.println("Indexing " + dataDir.getCanonicalPath());
Document doc = new Document();
doc.add(Field.Text("contents", new FileReader(dataDir)));
doc.add(Field.Keyword("filename", dataDir.getCanonicalPath()));
writer.addDocument(doc);
int numIndexed = writer.docCount();
writer.optimize();
writer.close();
return numIndexed;
}
색인 과정의 세 가지 주요 단계: 데 이 터 를 텍스트 로 변환 하고 텍스트 를 분석 하 며 분석 한 텍스트 를 색인 라 이브 러 리 에 저장 합 니 다. 주 1: Lucene 은 텍스트 파일, 즉. txt 파일 만 색인 할 수 있 습 니 다.주 2: 데 이 터 를 분석 하 는 가장 대표 적 인 조작 은 입력 에서 자주 사용 되 지만 실제 적 인 의미 가 없 는 단 어 를 제거 하 는 것 이다. 예 를 들 어 영어 텍스트 중의 일부 정지 어 (a, an, the, on, in 등).주 3: 데 이 터 는 역 렬 색인 의 데이터 구조 로 저장 되 는데 그 이 유 는 역 렬 색인 은 '이 문서 에 그 단어 들 이 포함 되 어 있 습 니까?' 라 고 대답 하 는 것 이 아니 라 최적화 된 후에 '그 문서 에 포 함 된 단어 x?' 라 고 신속하게 대답 하 는 것 입 니 다.
기본 색인 작업: 1) Lucene 은 서로 다른 Field 대상 을 가 진 Document 대상 이 하나의 색인 에서 공존 할 수 있 도록 합 니 다.2) 하나의 기본 단어 와 그 모든 동의어 를 색인 하려 면 같은 도 메 인 에 여러 개의 다른 값 을 부여 할 수 있다.3) 색인 에 있 는 문 서 를 IndexReader 로 삭제 합 니 다. IndexReader 가 close () 를 호출 한 후에 야 진정 으로 삭제 할 수 있 습 니 다.4) 모든 문서 에 유일한 내부 번호 가 있 지만 이것 은 영구적 인 것 이 아니 라 번 호 는 0 에서 시작 합 니 다.
private void addDocuments(Document doc, int maxFieldLength)
throws IOException {
IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(),
true);
writer.maxFieldLength = maxFieldLength;
writer.addDocument(doc);
writer.optimize();
writer.close();
}
IndexWriter writer = new IndexWriter(dir, new SimpleAnalyzer(), true);
writer.infoStream = System.out;
...
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.