第7章 インデックスの最適化
場合によっては、Lucene インデックスを最適化する必要があります。このプロセスは実際にはデフラグメンテーションです。最適化が実行されるまで、Lucene は削除されたドキュメントのみをマークし、物理的な削除は適用されません。最適化プロセスの間、削除は適用され、Lucene Directory の複数のファイルにも影響を与えます。
Lucene インデックスを最適化すると、検索が高速になりますが、インデックス化 (更新) パフォーマンスは影響を受けません。最適化中に、検索は実行できますが、ほとんどの場合処理が遅くなります。すべてのインデックス更新は停止されます。最適化をスケジュールすることが推奨されます。
- アイドル状態のシステム上、または検索の頻度が低い場合
- 大量のインデックス変更後
7.1. 自動最適化 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Hibernate Search は以下の処理後に自動的にインデックスを最適化できます。
- 特定の数の操作 (挿入、削除)
- または特定の数のトランザクション
自動インデックス最適化の設定は、グローバルレベルまたはインデックスごとに定義できます。
例7.1 自動最適化パラメータの定義
hibernate.search.default.optimizer.operation_limit.max = 1000 hibernate.search.default.optimizer.transaction_limit.max = 100 hibernate.search.Animal.optimizer.transaction_limit.max = 50
hibernate.search.default.optimizer.operation_limit.max = 1000
hibernate.search.default.optimizer.transaction_limit.max = 100
hibernate.search.Animal.optimizer.transaction_limit.max = 50
最適化は以下の場合すぐに
Animal
インデックスに対してトリガされます。
- 追加および削除の数が 1000 に達する
- トランザクションの数が 50 に達する (
hibernate.search.Animal.optimizer.transaction_limit.max
はhibernate.search.default.optimizer.transaction_limit.max
よりも優先されます)
これらのパラメータが定義されていない場合、最適化は自動的に処理されません。