14.5. インデックスの最適化
時折、Lucene インデックスを最適化する必要があります。このプロセスは基本的にはデフラグです。最適化がトリガーされるまで、Lucene は削除されたドキュメントのみをマークします。物理的には適用されません。最適化プロセス中に削除が適用され、Lucene ディレクトリー内のファイル数にも影響を及ぼします。
Lucene インデックスを最適化すると検索が高速になりますが、インデックス化 (更新) パフォーマンスには影響はありません。最適化中に検索を実行できますが、おそらく遅くなる可能性があります。インデックスの更新はすべて停止します。最適化のスケジュール設定が推奨されます。
- アイドル状態のシステムの場合、または検索が頻繁に行われない場合
- 多数のインデックス変更が適用された後。
MassIndexer (「MassIndexer の使用」 を参照) は、デフォルトで、開始時と処理終了時にインデックスを最適化します。MassIndexer を使用します。optimizeAfterPurgeおよび MassIndexer。optimizeOnFinishこのデフォルトの動作を変更します。
14.5.1. 自動最適化 リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
Hibernate Search は、以下のいずれかの後にインデックスを自動的に最適化できます。
- 一定量の操作 (挿入または削除)。
- 一定量のトランザクション。
インデックスの自動最適化の設定は、グローバルまたはインデックスごとに定義できます。
例14.67 自動最適化パラメーターの定義
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)。
これらのパラメーターが定義されていないと、最適化は自動的に処理されません。
OptimizerStrategy のデフォルト実装は、
org.hibernate.search.store.optimization.OptimizerStrategy を実装して上書きし、optimizer.implementation プロパティーを実装の完全修飾名に設定して上書きできます。この実装は、インターフェースを実装し、パブリッククラスであり、引数なしでパブリックコンストラクターを持つ必要があります。
例14.68 カスタム OptimizerStrategy のロード
hibernate.search.default.optimizer.implementation = com.acme.worlddomination.SmartOptimizer hibernate.search.default.optimizer.SomeOption = CustomConfigurationValue hibernate.search.humans.optimizer.implementation = default
hibernate.search.default.optimizer.implementation = com.acme.worlddomination.SmartOptimizer
hibernate.search.default.optimizer.SomeOption = CustomConfigurationValue
hibernate.search.humans.optimizer.implementation = default
キーワード
default を使用すると、Hibernate Search のデフォルト実装を選択できます。.optimizer キーセパレーター以降のすべてのプロパティーは、起動時に実装の initialize メソッドに渡されます。