У меня есть база данных размером 2 ГБ. Я использую метод индексации Lucene, чтобы ускорить поиск. Я обнаружил проблему, т.е. когда я загружал данные в память, отображалось сообщение об ошибке «недостаточно памяти; размер кучи java». Есть ли возможность загрузить данные без увеличения размера кучи java? Я использую 2GB RAM. Я не нашел решения этой проблемы. Есть ли решение? Пожалуйста помоги...
Как работать с большой базой данных с помощью Lucene?
Ответы (1)
Lucene может легко индексировать и искать более 200 ГБ данных, используя менее 10 ГБ памяти.
- Используйте последнюю версию Lucene.
- Чаще фиксируйте индекс. Вы должны хранить незафиксированные изменения в памяти и нуждаетесь в дополнительной памяти для их фиксации и объединения сегментов.
- Настройте потребление памяти
IndexWriterConfig.setRAMBufferSizeMB(double)
и связанными функциями и проверьте индексMergePolicy
, если вы нажмете OOM при слиянии. - Избегайте использования сохраненных полей для больших двоичных объектов данных. Для индексации БД достаточно сохранить только идентификатор.
- Используйте надлежащие анализаторы полей, словарь терминов будет как можно меньше.
Некоторые связанные ссылки:
- Использование оперативной памяти Lucene для поиска (старое, но до сих пор актуально)
- IndexWriterConfig.setRAMBufferSizeMB(double)
- MergePolicy
person
Nikolay
schedule
13.12.2014