검색 색인을 동시에 읽고 쓸 수 있어야하는 응용 프로그램이 있습니다. 필자가 주목 한 점은 IndexWriter와 DirectoryReader를 동시에 사용할 수 없다는 점입니다. 기본적으로 : Lucene에서 동시 읽기 및 쓰기
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_46, new StandardAnalyzer(Version.LUCENE_46));
IndexWriter writer = new IndexWriter(directory, config);
writer.commit();
DirectoryReader reader = DirectoryReader.open(writer.getDirectory());
//Add documents here
writer.commit();
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser qp = new QueryParser(Version.LUCENE_46,"field", new StandardAnalyzer(Version.LUCENE_46));
qp.setAllowLeadingWildcard(true);
Query q = qp.parse("field:*");
가 전혀 작동하지 않는 동안
IndexWriter writer = new IndexWriter(directory, config);
//Add documents here...
writer.commit();
DirectoryReader reader = DirectoryReader.open(writer.getDirectory());
IndexSearcher searcher = new IndexSearcher(reader);
QueryParser qp = new QueryParser(Version.LUCENE_46,"field", new StandardAnalyzer(Version.LUCENE_46));
qp.setAllowLeadingWildcard(true);
Query q = qp.parse("field:*");
는 잘 작동합니다.
각 커밋 후에 DirectoryReader를 다시 열어야합니까?
예. 재개해야합니다. 대안으로 Near-Realtime Reader가 있습니다. 이 블로그 항목을 확인하십시오 : http://blog.mikemccandless.com/2011/11/near-real-time-readers-with-lucenes.html –