Hibernate Searchって何だ?

2007年11月12日(月)
関口 宏司

クラスタのサポート

JBoss Enterprise Application Platform(以下、JBoss EAP)に搭載されているJMSサーバを使って、クラスタ環境でHibernate Searchアプリケーションを実行することができる。

Hibernate SearchのノードはMasterとSlaveに分けられる。MasterはJMSキューからインデックス更新処理リクエストを取得し、Masterの 検索インデックスを更新する。更新されたインデックスはSlaveノードの検索インデックスにコピーする(cpコマンドやrsyncなどを使ってコピーす る)。そしてSlaveはSlaveの検索インデックスを使って検索処理を行う。なお、検索インデックスの更新リクエストはSlaveがJMSキューに投 入する。


クラスタ環境におけるHibernate Searchの実行
図3:クラスタ環境におけるHibernate Searchの実行
(画像をクリックすると別ウィンドウに拡大図を表示します)

IndexReaderの戦略種別

検索処理はLuceneのIndexReaderというクラスのインスタンスを使用して行われる。このインスタンスを取得する「戦略(Reader Strategy)」として、Hibernate Searchは「個別(not-shared)」と「共有(shared)」の各方式を用意している。

「個別」戦略では、IndexReaderのインスタンスが検索リクエストごとに毎回作成され、使い終わったら破棄される。この方法は検索性能が落ちるため、筆者としては推奨しない。

「共有」戦略では、Hibernate Search内に検索インデックスに対応した1つのIndexReaderインスタンスを作成し、これですべての検索リクエストを処理する。インデックスが更新された場合は、自動的にIndexReaderの再オープンが実行される。通常はこの戦略を使用する。

次回は

以上、今回はHibernate Searchの概略を説明した。次回ではビジネスオブジェクトと全文検索の機能がHibernate Searchによってシームレスにマッピングされる様子を、実際にプログラムを書いて確認していく。

株式会社ロンウイット

代表取締役社長
数社のITベンダー勤務を経て、2006年5月にロンウイット社を設立。オープンソースの全文検索エンジンLuceneとSolrを企業システムに導入する支援事業を展開している。「Apache Lucene入門」(技術評論社)はじめ著書多数。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています