gpt4 book ai didi

java - Lucene 的 MultiSearcher 与 IndexSearcher 与 MultiReader

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:26:43 25 4
gpt4 key购买 nike

我即将编写一个具有分布式索引的近实时搜索应用程序。现在我想知道在多个索引上实现搜索的正确方法是什么:

我已经阅读了有关 MultiSearcher 的信息,所以一种方法是:

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);

但据我所知,这也是可能的:

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));

这两种方法之间有什么显着差异吗?如果读取器没有数据,第二个会更容易处理,因为我可以调用 MultiReader.reopen() 而不是遍历所有 IndexReader,重新打开它们,而不是创建新的 IndexSearchers...

最佳答案

关于java - Lucene 的 MultiSearcher 与 IndexSearcher 与 MultiReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9820407/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com