14.4. 手動によるインデックスの変更
Hibernate Core が変更をデータベースに適用すると、Hibernate Search はこれらの変更を検出し、インデックスを自動的に更新します (eventListener が無効でない場合)。バックアップが復元したり、データが影響を受ける場合のように、Hibernate を使用せずにデータベースに変更が加えられることがあります。このような場合、Hibernate Search は Manual Index API を公開し、インデックスから単一のエンティティーを明示的に更新または削除したり、データベース全体のインデックスを再構築したり、特定のタイプへのすべての参照を削除したりします。
これらのメソッドはすべて Lucene Index のみに影響し、変更は適用されません。
14.4.1. インデックスへのインスタンスの追加
FullTextSession
を使用します。index(T entity)
特定のオブジェクトインスタンスをインデックスに直接追加または更新できます。このエンティティーがすでにインデックス化されている場合は、インデックスが更新されます。インデックスへの変更は、トランザクションコミット時にのみ適用されます。
例14.61 FullTextSession.index (T エンティティー) を介したエンティティーのインデックス作成
FullTextSession fullTextSession = Search.getFullTextSession(session);
Transaction tx = fullTextSession.beginTransaction();
Object customer = fullTextSession.load( Customer.class, 8 );
fullTextSession.index(customer);
tx.commit(); //index only updated at commit time
1 つのタイプのすべてのインスタンスを追加する場合や、すべてのインデックスタイプのインスタンスを追加する場合には、
MassIndexer
を使用することが推奨されます。詳細は「MassIndexer の使用」を参照してください。