2009-03-21 2 views
23

Каковы различные способы оптимизации производительности Lucene?Оптимизация производительности Lucene

Должен ли я использовать API кеширования для хранения моего поискового запроса lucene, чтобы я сохранил накладные расходы на создание запроса еще раз?

ответ

4

Чит. Используйте RAMDirectory, чтобы загрузить весь индекс в плунжер. Впоследствии все быстро вспыхивает. :)

3

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

Получить Netbeans profiler или что-то подобное и попробовать его разными способами , Используйте статьи, связанные с Митчем, но убедитесь, что вы действительно проверяете, что помогает, и что (часто на удивление) болит.

Существует также хорошая вероятность того, что любые различия в производительности, которые вы можете получить от Lucene, будут незначительными по сравнению с улучшением производительности в ваш код. Профилер также укажет на это.

11

Быстрые советы:

  • сохранить размер индекса небольшой. Устранить нормы, векторы сроков, когда они не нужны. Установите флаг «Сохранить» для поля, только если это необходимо.
  • Очевидная, но часто повторяющаяся ошибка. Создайте только один экземпляр Searcher и повторного использования.
  • Хранить в индексе на быстрых дисках. RAM, если вы параноик.
4

Много мертвых ссылок здесь.

Эти (несколько официальных) ресурсы, где я хотел бы начать:

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

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

+0

На данный момент Lucene.NET действительно отстает от Lucene, поэтому документация Lucene становится все менее актуальной. Похоже, бюрократия угнала большинство участников Lucene.NET –