Java Lucene';s多搜索器与带多读卡器的索引搜索器
我将要编写一个具有分布式索引的近实时搜索应用程序。现在我想知道在多个索引上实现搜索的正确方法是什么: 我读过关于MultiSearcher的文章,因此一种方法是:Java Lucene';s多搜索器与带多读卡器的索引搜索器,java,search,lucene,Java,Search,Lucene,我将要编写一个具有分布式索引的近实时搜索应用程序。现在我想知道在多个索引上实现搜索的正确方法是什么: 我读过关于MultiSearcher的文章,因此一种方法是: IndexSearcher[] indexSearchers = new IndexSearcher[indexCount]; for (int i = 0; i < indexCount; i++) { File directory = new File(indexdir, String.valueOf(i));
IndexSearcher[] indexSearchers = new IndexSearcher[indexCount];
for (int i = 0; i < indexCount; i++) {
File directory = new File(indexdir, String.valueOf(i));
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(directory), analyzer, IndexWriter.MaxFieldLength.LIMITED);
IndexReader indexReader = indexWriter.getReader();
indexSearchers[i] = new IndexSearcher(indexReader);
}
MultiSearcher searcher = new MultiSearcher(indexSearchers);
IndexSearcher[]indexSearchers=newindexsearcher[indexCount];
对于(int i=0;i
但在我看来,这也是可能的:
IndexReader[] indexReader = new IndexReader[indexCount];
for (int i = 0; i < indexCount; i++) {
File directory = new File(indexdir, String.valueOf(i));
IndexWriter indexWriter = new IndexWriter(FSDirectory.open(directory), analyzer, IndexWriter.MaxFieldLength.LIMITED);
indexReader[i] = indexWriter.getReader();
}
IndexSearcher searcher = new IndexSearcher(new MultiReader(indexReader));
IndexReader[]IndexReader=新的IndexReader[indexCount];
对于(int i=0;i
这两种方法之间是否存在显著差异?如果读卡器没有数据,第二个选项将更容易处理,因为我可以调用MultiReader.reopen(),而不是迭代所有的IndexReader,重新打开它们,然后创建新的IndexSearcher…您应该使用第二个选项:谢谢!由于公司政策,我正在使用lucene 2.9,所以我还没有意识到MultiSearcher是“无润滑的”。