2010-11-24 29 views
0

L'option mirrorChanges reflètera toutes les modifications effectuées via GORM/Hibernate, donc si je ne fais aucune modification externe à la base de données, bulkIndexOnStartup est-il nécessaire?Est-ce que bulkIndexOnStartup est nécessaire lors de l'utilisation de mirrorChanges = true dans Grails Searchable plugin?

Le problème est que notre ensemble de données est très volumineux (lignes> 1M) et que l'indexeur de masse peut prendre 30+ minutes. Si elle est définie sur 'fork', Lucene se bloquera si des modifications sont effectuées via le GORM, car Lucene n'est pas thread-safe et la transaction GORM tentera de mettre à jour l'index pendant que le thread d'index bulk fork est en cours d'exécution.

Lorsque cette propriété est définie sur true, l'application termine l'initialisation pour ces 30 minutes et plus.

+0

avez-vous réellement vu le plantage de l'indexeur de masse en le forçant au démarrage? –

Répondre

0

Si vous ne modifiez pas les données d'une autre source, vous n'avez pas besoin de définir bulkIndexOnStartup sur true, spécialement si vous définissez mirrorChanges sur true. C'est à peu près comment nous le traitons dans notre application. Nous avons une action de contrôleur qui appelle l'indexeur, fourchu, pour une classe spécifique afin que nous puissions l'appeler à la demande au besoin, par exemple si pour une raison quelconque nous avions besoin de mettre à jour la base de données directement. Nous appelons alors l'indexeur pour une classe spécifique et non pour l'ensemble de la classe, de cette manière si nous avons besoin de l'appeler, cela ne prendra pas trop de temps.

0

bulkIndexOnStartup ne devrait pas être nécessaire si vous effectuez une mise en miroir des modifications.

nous avons un beaucoup plus petit ensemble de données que nous faisons en fait bulkIndexOnStartup avec « fourchette » définie comme une option quand nous libère davantage comme une tâche d'entretien