Dağıtılmış dizinlere yakın bir gerçek zamanlı arama uygulaması yazmak üzereyim. Şimdi birden indeksleri üzerinden arama uygulamak için doğru approch ne olduğunu merak:Lucene's MultiSearcher - IndexSearcher with MultiReader
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);
Ama gördüğünüz gibi bu da mümkündür: Ben MultiSearcher okudum
, bu nedenle tek approch olurdu
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));
Bu iki onay arasında anlamlı bir fark var mıdır? Okuyucu verilerinin dışında olup olmadığını sadece yerine onları yeniden açılması, tüm IndexReaders yinelemek ve oluşturma yeni IndexSearchers yerine) MultiReader.reopen (diyebiliriz çünkü ikincisi
Teşekkürler! Şirket politikası nedeniyle lucene 2.9 kullanıyorum, bu yüzden MultiSearcher'ın @Depricated olduğunu anlamış değilim. – woezelmann