Как: увеличить скорость индексации Lucene .net - PullRequest
8 голосов
/ 27 июня 2009

Я пытаюсь создать люцен из примерно 2 миллионов записей. Время индексации составляет около 9 часов. Подскажите, пожалуйста, как увеличить производительность?

Ответы [ 4 ]

3 голосов
/ 27 июня 2009

Я написал ужасный пост о том, как распараллелить индекс Lucene. Это действительно ужасно написано, но вы найдете это здесь (есть некоторый пример кода, на который вы, возможно, захотите взглянуть).

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

С подходом, описанным выше, я могу индексировать более 4 миллионов записей в прибл. 2 часа.

Надеюсь, это даст вам представление о том, куда идти дальше.

1 голос
/ 29 июня 2009

Следующая статья действительно помогла мне, когда мне нужно было ускорить процесс:

http://wiki.apache.org/lucene-java/ImproveIndexingSpeed

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

1 голос
/ 27 июня 2009

Помимо стороны записи (коэффициент слияния) и аспекта вычислений (распараллеливание) это иногда происходит по самой простой причине: медленный ввод. Многие люди создают индекс Lucene из базы данных. Иногда вы обнаруживаете, что конкретный запрос для этих данных слишком сложный и медленный, чтобы на самом деле быстро вернуть все (2 миллиона?) Записей. Попробуйте только запрос и запись на диск, если он по-прежнему порядка 5-9 часов, вы нашли место для оптимизации (SQL).

0 голосов
/ 27 июня 2009

Самый простой способ улучшить производительность индексирования Lucene - это настроить значение переменной экземпляра mergeFactor в IndexWriter. Это значение указывает Lucene, сколько документов следует сохранить в памяти перед их записью на диск, а также о частоте объединения нескольких сегментов.

http://search -lucene.blogspot.com / 2008/08 / индексирование скорость-factors.html

...