そしてどうですか?Lucene.NETのインデックスセグメントを並列に読み取ることはできますか?
スタンドアアFSDirectoryのIndexReaderとCollectorを使用して結果を収集していますが、現在読んでいる時間のほとんどがLucene.Net.Index.SegmentTermEnum.Next()
に費やされています。
読み取りはシングルスレッドで実行され、サーバーには8つのコアがあるため、すべて読み込みます。
そしてどうですか?Lucene.NETのインデックスセグメントを並列に読み取ることはできますか?
スタンドアアFSDirectoryのIndexReaderとCollectorを使用して結果を収集していますが、現在読んでいる時間のほとんどがLucene.Net.Index.SegmentTermEnum.Next()
に費やされています。
読み取りはシングルスレッドで実行され、サーバーには8つのコアがあるため、すべて読み込みます。
私が考えることができる唯一のソリューションは、いくつかのサブインデックスでインデックスを分割し、それらを検索するのにParallelMultiSearcherを使用することですが、Luceneが一般にIOバインドであるためパフォーマンスが低下することがわかりますCPUにバインドされていない
また、すべてのコアを1回の検索に使用する場合は、複数のクエリを並行して処理すると、恐ろしいパフォーマンスが発生する可能性があります。
結果を別のスレッドで分割することはできません。すべて同じIndexReaderから読み込みますか?
いいえ、私の読者が私のコールバックコレクタ –