2010-11-24 1 views
0

mirrorChangesオプションは、GORM/Hibernateで行われたすべての変更をミラーリングします。したがって、データベースを外部で変更していない場合、bulkIndexOnStartupが必要ですか?Grails SearchableプラグインでmirrorChanges = trueを使用する場合はbulkIndexOnStartupが必要ですか?

データセットが非常に大きく(1M行以上)、バルクインデクサーが30分以上かかることがあるという問題があります。

'fork'に設定すると、luceneはスレッドセーフではなく、forkされたバルクインデックススレッドが実行されている間にGORMトランザクションがインデックスを更新しようとするため、GORMを使って変更が行われるとluceneがクラッシュします。

trueに設定すると、アプリケーションは30分以上の初期化を完了します。

+0

起動時にフォークすると、実際にバルクインデクサーがクラッシュしていますか? –

答えて

0

あなたが別のソースからのデータを変更していない場合は、より多くのメンテナンス作業のようリリースを行うオプションとして設定「フォーク」でbulkIndexOnStartupを行うよう

我々ははるかに小さいデータセットを持っていますmirrorChangesをtrueに設定した場合はbulkIndexOnStartupをtrueに設定する必要はありません。これは、アプリケーションでそれを処理する方法とほぼ同じです。特定のクラスに対してインデクサをforkして呼び出すコントローラーアクションがあります。たとえば、何らかの理由でデータベースを直接更新する必要がある場合など、必要に応じて呼び出すことができます。次に、クラスのセット全体ではなく、特定のクラスのインデクサを呼び出します。それを呼び出す必要がある場合は、そう長くはかかりません。

0

変更をミラーリングする場合は、bulkIndexOnStartupは不要です。我々は実際に我々が

関連する問題