2010-11-24 1 views
0

Опция mirrorChanges будет отражать все изменения, сделанные с помощью GORM/Hibernate, поэтому, если я не делаю никаких внешних изменений в базе данных, то нужно ли иметь значение bulkIndexOnStartup?Is bulkIndexOnStartup необходимо при использовании mirrorChanges = true в Grails Searchable plugin?

Проблема в том, что наш набор данных очень большой (> 1M строк), а индекс индексации может занять 30+ минут.

При установке на «fork» lucene будет сбой, если любые изменения будут сделаны с помощью GORM, потому что lucene не является потокобезопасным, и транзакция GORM будет пытаться обновить индекс, пока поток разветвленного индекса потока запущен.

Если установлено значение true, приложение завершит инициализацию для этих 30 + минут.

+0

Вы на самом деле видели сбои индексатора индекса при разветвлении его при запуске? –

ответ

0

Если вы не изменяете данные из другого источника, то вы не нужно устанавливать для bulkIndexOnStartup значение true, особенно если вы установите для mirrorChanges значение true. Это в значительной степени то, как мы справляемся с этим в нашем приложении. У нас есть действие контроллера, которое вызывает индексатор, раздвоенный, для определенного класса, поэтому мы можем вызвать его по требованию, если нам нужно, например, если по какой-то причине нам нужно было обновить базу данных напрямую. Затем мы вызываем индексатор для определенного класса, а не для всего набора классов, таким образом, если нам нужно его называть, тогда это не займет много времени.

0

bulkIndexOnStartup не требуется, если вы зеркалируете изменения.

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