Grails поиск плагина переиндексации производительности настройки

Мне нужно регулярно переиндексировать все экземпляры моего домена из действующей унаследованной базы данных. Где ~400 тыс. Перекодировщиков в БД Чтение объекта домена по одному из БД без реиндекса, получая ~15 минут

Итерации с reindex получают 8-10 часов с индексом в remdisk:

ids.each { id ->
      Domain.reindex(id)
}

Я не могу использовать Domain.reindex() из-за тайм-аута соединения с БД

searchableService.reindexAll(список) займет около 2 часов. Но этот метод не рекомендуется

Индекс обновляется одним потоком. Размер результирующего индекса на диске ~0.5 Гб

Как я могу улучшить представление на Lucena? Как я понимаю, переиндексация моей информации должна занять около часа.

1 ответ

Решение

Согласно /questions/8774754/indeks-s-vozmozhnostyu-poiska-blokiruetsya-pri-obnovlenii-vruchnuyu-lockobtainfailedexception/8774766#8774766 хорошими настройками являются:

compassSettings = [
  'compass.engine.optimizer.schedule.period': '300',
  'compass.engine.mergeFactor':'1000',
  'compass.engine.maxBufferedDocs':'1000',
  'compass.engine.ramBufferSize': '128',
  'compass.engine.useCompoundFile': 'false',
  'compass.transaction.processor': 'read_committed',
  'compass.transaction.processor.read_committed.concurrentOperations': 'false',
  'compass.transaction.lockTimeout': '30',
  'compass.transaction.lockPollInterval': '500',
  'compass.transaction.readCommitted.translog.connection': 'ram://'
]
Другие вопросы по тегам