全文検索機能を試すサンプルを作成しよう!

2007年11月20日(火)
関口 宏司

社員の検索のソースコード

「社員の検索」を行うソースコードを図2に示す。

まず、JBoss HibernateのSessionを前述のHibernateUtilを使って取得している。取得したsessionを全文検索のセッションオブジェクトにするためにSearch.createFullTextSession()メソッドにsessionを渡してFullTextSessionオブジェ クトftsを取得する。

そしてfts.beginTransaction()とfts.getTransaction().commit()の間で検索を実行している。

検索の実行にはHibernateのQueryオブジェクトに対してlist()メソッドを実行すればよいが、そのQueryオブジェクトを取得するためにLuceneのQueryオブジェクトを引数にしてfts.createFullTextQuery()メソッドを呼び出している。

なお、LuceneのQueryオブジェクトはLuceneのQueryParserのparse()メソッドに検索式の文字列を渡して取得している。


社員の検索のソースコードと起動コマンド
図3:社員の検索のソースコードと起動コマンド
(画像をクリックすると別ウィンドウに拡大図を表示します)

プログラムの実行

まず、insertコマンドを与えてプログラムを起動する。

一度「insert」で社員データを登録したらあとは「query」や「update」コマンドで検索やデータの更新を行うことができる(insert、updateおよびqueryは何度でも繰り返して実行できる)。なお、プログラムの実行に先立ってRDBの準備とEMPLOYEEテーブルの作成およびJBoss Hibernateの設定ファイルの生成などは別途行っておかなければならないので注意していただきたい。

ZIPファイルには、プログラムの起動やRDBのテーブルの作成などが簡単に実行できるAntのbuild.xmlファイルが含まれている。使い方の詳しい説明はZIPファイルに含まれているreadme.txtを参照していただきたい。

まとめ

Hibernate Searchは、LuceneのAPIをほとんど使用することなしにLuceneの全文検索の機能を利用できるように設計されたフレームワークである。

全文検索機能の利用には、HibernateのAPIとアノテーションを使うだけなので、特に日ごろHibernateを愛用しているエンジニアであればすぐにでも使いはじめられるだろう。またJava EEコンポーネントとの親和性も高くなりJava EE技術の延長でエンタープライズサーチシステムの構築が容易になるであろう。

株式会社ロンウイット

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

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

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

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

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