是否可以并行读取Lucene.NET索引段?

时间:2012-01-31 12:29:48

标签: lucene lucene.net

怎么样?

我使用标准的FSDirectory的IndexReader和Collector来收集结果,但现在我发现在阅读过程中我的大部分时间花在了Lucene.Net.Index.SegmentTermEnum.Next()上。

读取是在单线程中执行的,因为服务器有8个内核,我想加载它们。

2 个答案:

答案 0 :(得分:2)

我能想到的唯一内置解决方案是将索引分成几个子索引并使用ParallelMultiSearcher来搜索它们,但我很确定你会看到性能下降,因为Lucene通常是IO绑定而不是CPU绑定。

另请注意,如果您将所有核心用于单个搜索,则在并行提供多个查询时可能会遇到可怕的性能。

答案 1 :(得分:0)

你不能将结果拆分为不同的线程,所有线程都是从同一个IndexReader读取的吗?