Можно ли читать сегменты индекса Lucene.NET параллельно? - PullRequest
0 голосов
/ 31 января 2012

И как?

Я использую над ним IndexReader и Collector стандартного FSDirectory, чтобы собрать результаты, но теперь я вижу, что большая часть моего времени при чтении тратится на Lucene.Net.Index.SegmentTermEnum.Next().

Чтение выполняется в один поток, и так как сервер имеет 8 ядер, я хочу загрузить их все.

Ответы [ 2 ]

2 голосов
/ 31 января 2012

Единственное встроенное решение, которое я могу придумать, - это разделить ваш индекс на несколько подиндексов и использовать ParallelMultiSearcher для их поиска, но я почти уверен, что вы увидите снижение производительности по мере того, как Lucene обычно ограничен вводом-выводом, а не процессором.

Также помните, что если вы будете использовать все ядра для одного поиска, вы можете столкнуться с ужасной производительностью при параллельном обслуживании нескольких запросов.

0 голосов
/ 31 января 2012

Разве вы не можете разделить результат в разных потоках, которые все читают из одного и того же IndexReader?

...