Как работать с большой базой данных с помощью Lucene?

У меня есть база данных размером 2 ГБ. Я использую метод индексации Lucene, чтобы ускорить поиск. Я обнаружил проблему, т.е. когда я загружал данные в память, отображалось сообщение об ошибке «недостаточно памяти; размер кучи java». Есть ли возможность загрузить данные без увеличения размера кучи java? Я использую 2GB RAM. Я не нашел решения этой проблемы. Есть ли решение? Пожалуйста помоги...


person Polen Patowary    schedule 13.12.2014    source источник


Ответы (1)


Lucene может легко индексировать и искать более 200 ГБ данных, используя менее 10 ГБ памяти.

  1. Используйте последнюю версию Lucene.
  2. Чаще фиксируйте индекс. Вы должны хранить незафиксированные изменения в памяти и нуждаетесь в дополнительной памяти для их фиксации и объединения сегментов.
  3. Настройте потребление памяти IndexWriterConfig.setRAMBufferSizeMB(double) и связанными функциями и проверьте индекс MergePolicy, если вы нажмете OOM при слиянии.
  4. Избегайте использования сохраненных полей для больших двоичных объектов данных. Для индексации БД достаточно сохранить только идентификатор.
  5. Используйте надлежащие анализаторы полей, словарь терминов будет как можно меньше.

Некоторые связанные ссылки:

  1. Использование оперативной памяти Lucene для поиска (старое, но до сих пор актуально)
  2. IndexWriterConfig.setRAMBufferSizeMB(double)
  3. MergePolicy
person Nikolay    schedule 13.12.2014