Apache Lucene을 사용하고 있으며 데이터베이스는 약 3GB입니다.Lucene에서 색인을 업데이트하는 방법
처음 Lucene을 사용하여 색인을 만드는 데는 약 25 분이 걸립니다. 그러나 나는 그것을 사용할 때마다 업데이트 될 것 같은 나의 어플리케이션을 원한다.
그래서 어떻게하면 내 색인이 매번 업데이트 될 수 있고 업데이트하는 데 시간이 덜 걸릴 수 있습니까?
데이터베이스 변경 사항은 매우 적지 만 데이터베이스의 새로운 항목은 색인화되어야합니다.
Directory directory = new SimpleFSDirectory(INDEX_DIRECTORY);
//Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_36);
SimpleAnalyzer analyzer = new SimpleAnalyzer(Version.LUCENE_36);
IndexWriterConfig indexWriterConfig = new IndexWriterConfig(Version.LUCENE_36, analyzer);
indexWriterConfig.setOpenMode(IndexWriterConfig.OpenMode.CREATE);
IndexWriter iWriter = new IndexWriter(FSDirectory.open(indexDirNEW), indexWriterConfig);
IndexWriter iWriter = new IndexWriter(directory, analyzer, true,MaxFieldLength.UNLIMITED);
int count = 0;
while(rs.next()) {
Document doc = new Document();
doc.add(new Field("NAME", rs.getString("NAME")==null?"":rs.getString("NAME"), Field.Store.YES, Field.Index.ANALYZED));
doc.add(new Field("CUSTOMER", rs.getString("CUSTOMER")==null?"":rs.getString("CUSTOMER"), Field.Store.YES, Field.Index.ANALYZED));
iWriter.addDocument(doc);
count++;
}
System.out.println(count+" record indexed");
iWriter.optimize();
iWriter.commit();
iWriter.close();
가장 명백한 속도는 optimize()를 호출하지 않는 것입니다. 실행 시간이 어디에 사용되었는지 확인하기 위해 코드를 프로파일 링 했습니까? – sisve