2012-01-31 21 views
0

又如何?是否可以並行讀取Lucene.NET索引段?

我用非標準FSDirectory的的IndexReader和收藏家在它收集的結果,但現在我看到,在讀期間我大部分時間在Lucene.Net.Index.SegmentTermEnum.Next()花費。

讀取在單線程中執行,並且由於服務器有8個內核,我想將它們全部加載。

回答

2

我能想到的唯一內置解決方案就是將索引分成多個子索引,並使用ParallelMultiSearcher來搜索它們,但我相當確信你會看到性能下降,因爲Lucene通常是IO界限,不受CPU限制。

另請注意,如果您將所有核心用於單個搜索,則在並行服務多個查詢時可能會遇到可怕的性能。

0

難道你不能將結果拆分成不同的線程,即所有從同一個IndexReader讀取?

+0

不,我不能 - 因爲它的讀者調用我的回調收集器 – 2012-01-31 12:54:46