IndexWriter writer = null;
try {
Directory dir = FSDirectory.open(new File(path));
Analyzer analyzer = new StandardAnalyzer(LUCENE_VERSION);
IndexWriterConfig iwc = new IndexWriterConfig(LUCENE_VERSION, analyzer);
iwc.setRAMBufferSizeMB(getIndexRamBufferSizeMB());
iwc.setOpenMode(OpenMode.CREATE_OR_APPEND);
writer = new IndexWriter(dir, iwc);
Term term = new Term(request.getIndexKeyName(), String.valueOf(request.getId()));
writer.deleteDocuments(term);
writer.deleteUnusedFiles();
} catch (Exception e) {
e.printStackTrace();
}
finally {
if (writer != null) {
try {
writer.commit();
writer.close(true);
} catch (Exception e1) {
e1.printStackTrace();
}
}
}
문서를 삭제할 수 있지만 색인 파일 크기는 줄이지 않습니다. 특히 _a.fdt, _a_Lucene41_0.pos.왜 삭제하지 않으면 lucene에서 색인 파일 크기가 줄어 듭니까?
모든 문서를 삭제 한 후 _a.fdt 크기 10037kb를 삭제하기 전에 크기가 동일합니다.
도와주세요.
해결! ** writer.deleteUnusedFiles() ** 후에 ** writer.forceMergeDeletes() **를 사용하면 segments_c 및 segment_gen을 제외한 모든 파일이 삭제됩니다. 이 방법의 사용이 사실입니까? – hebset