Red Hat Training

A Red Hat training course is available for Red Hat JBoss Enterprise Application Platform

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 の使用」を参照してください。