怎么样?
我使用标准的FSDirectory的IndexReader和Collector来收集结果,但现在我发现在阅读过程中我的大部分时间花在了Lucene.Net.Index.SegmentTermEnum.Next()
上。
读取是在单线程中执行的,因为服务器有8个内核,我想加载它们。
答案 0 :(得分:2)
我能想到的唯一内置解决方案是将索引分成几个子索引并使用ParallelMultiSearcher来搜索它们,但我很确定你会看到性能下降,因为Lucene通常是IO绑定而不是CPU绑定。
另请注意,如果您将所有核心用于单个搜索,则在并行提供多个查询时可能会遇到可怕的性能。
答案 1 :(得分:0)
你不能将结果拆分为不同的线程,所有线程都是从同一个IndexReader读取的吗?