Hibernate Searchって何だ?

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

Hibernate Searchとは?

本連載では、Hibernate Searchによる全文検索システムの構築について解説していく。

Hibernate Searchとは、JBoss Hibernateのフレームワークから透過的に全文検索の機能を利用できるようにしたJBoss Hibernateへのアドオン・コンポーネントである。「透過的」な全文検索機能へのアクセスにはJBoss HibernateのAPIとアノテーションを通じて行う。また、全文検索の機能は「JBoss EAP+Luceneによる全文検索システム」で紹介している「Lucene」の利用が前提となっているので注意してほしい。


筆者はHibernate Searchを使う理由には、2つの大きなメリットがあると考えている。

メリット1「RDBと検索エンジンのデータの同期」

JBoss EAP+Luceneによる全文検索システム」では、Yahoo!オークションの商品情報を検索するWebアプリケーションを作成している。そこでは商品情報をLuceneの転置索引(以下、検索インデックス)に登録したため、リレーショナルデータベース(以下、RDB)を必要としていない。

しかし現実のシステムでは商品の全情報はRDBで管理し、全文検索のために必要な一部の情報を使って検索インデックスを作成する。これはRDBと検 索エンジンを比較した場合、RDBはデータ管理が得意であり、検索エンジンは全文検索が得意という特徴があるからだ。

具体的には、RDBはデータの新規追加(INSERT)、更新(UPDATE)および削除(DELETE)をリアルタイムにこなすことが得意である。しかし、全文検索を行うにはLIKEによるパターンマッチを使用することになり、レコード件数が多い場合に性能上の問題が出てくる。一方で、検索エン ジンは全文検索を得意とするが、リアルタイムのデータ更新は不得意である。

そこで両者のメリットを活かしたシステム構築を行う必要がでてくる(図1)。

両者のメリットを活かしたシステム構成
図1:両者のメリットを活かしたシステム構成

RDBと検索エンジンを組み合わせたシステム構築を行う場合、今度は「RDBのテーブル内のレコードの情報」と「検索エンジンの検索インデックスの内容」を同期させなければならない、という新たな課題が持ちあがってくる。

この課題を克服するものとしてHibernate Searchが利用できるのだ。Hibernate Searchのセッションを通じてRDBに更新(INSERT/UPDATE/DELETE)をかけると、自動的に検索インデックスの更新が行われるようになる。これがHibernate Searchの第1のメリットである。なお、Hibernate Searchを利用するには、JBoss Hibernateの使用が必須となる。

JBoss HibernateはJavaオブジェクトをRDBのテーブルに永続化するために、オブジェクト/リレーショナルマッピング(O/Rマッピング)を自動的に行うオープンソースのフレームワークである。JBoss Hibernateは、JBoss Enterprise MiddlewareのJBoss Enterprise Frameworksとして提供されており、レッドハット社のサポートが受けられる。

以降ではJBoss Hibernateへの基本知識があるものとして解説していくので、詳しく知りたい方は下記のURLを参照していただきたい。



JBoss Hibernate(Hibernate Core)
http://www.hibernate.org/344.htm
※対象ページ閉鎖

JBoss Hibernate(レッドハット社)
http://www.jp.redhat.com/jboss/frameworks/hibernate/

   次にもう1つのメリットを解説する。

株式会社ロンウイット

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

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

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

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

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