TOPサーバ構築・運用> Hibernate Searchのサンプルプログラム




Hibernate Searchで全文検索システム構築
Hibernate Searchで全文検索システム構築

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

著者:ロンウイット  関口 宏司   2007/11/20
1   2  3  次のページ
Hibernate Searchのサンプルプログラム

   今回は早速、Hibernate Searchを使ったプログラムを作成してみよう。

   作成するプログラムはある会社で使われる社員検索システムとする。このシステムでは、社員が相互に趣味や得意分野などの「タグ」をつけられるようになっており、検索時は「タグ」で社員を検索できるようにする、というものである。また今回のサンプルアプリケーションでは、アプリケーションサーバを利用せずにスタンドアロンのJavaアプリケーションとして実装している。

   このシステムでは図1のようなEmployeeクラスを用いることとし、永続化はJBoss Hibernateを通じてEMPLOYEEテーブルに行うものとする。

   以降では、プログラムコードの一部を掲載しながら説明してく。プログラムの全体および必要なライブラリは下記のWebサイトにある「Think IT記事」の「Hibernate Searchで全文検索システム構築」からダウンロードしていただきたい。
Hibernate Searchサンプルプログラムのダウンロードページ
http://www.rondhuit.com/download.html

本システムのクラス構成とソースコードサンプル
図1:本システムのクラス構成とソースコードサンプル


Employeeクラス

   まずはビジネスオブジェクトとなるEmployeeクラスを実装する。Employeeクラスの宣言部分はアノテーションを用いて図1の(1)のようになる。黒字部分がJBoss Hibernate、赤字部分がHibernate Searchのアノテーションとなる。

   @Indexedは、このクラスがLuceneのDocumentとして検索インデックスに登録される対象であることを示す。

   次にid、nameおよびtagsの各属性のソースコードをみてみる。まず、id属性は図1の(2)のようになる。Employeeのプライマリキーとなるidには、検索インデックスに対して@DocumentIdを指定するだけでよい。この指定により、RDBのレコードとLuceneのDocumentの正確なマッピングが行われるようになる。

   nameとtags属性は図1の(3)ようになる。@Fieldでその属性がLuceneのFieldとなることを示している。

   @Fieldでは、storeでそのFieldを文字列情報として登録する(Store.YES)か、しない(Store.NO)かを指定している。また、indexで索引付け時にAnalyzerを使用する(Index.TOKENIZED)か、しない(Index.UN_TOKENIZED)かも指定する。

   なお、索引付けしないという選択も可能で、その場合は「index=Index.NO」と指定すればよい(索引付けしないとそのFieldでは検索できなくなる)。さらに、Index.TOKENIZEDを選択したときは@Analyzerで使用するAnalyzerクラスを指定する。

   次に、HibernateUtilクラスについて解説する。

1   2  3  次のページ


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

ロンウイット:http://www.rondhuit.com/
ブログ:http://lucene.jugem.jp/


この記事の評価をお聞かせください
ボタンをクリックしますとウインドウが開きます。
ご意見、ご要望にお応えします! インプレスIT INSIDE

INDEX
第2回:全文検索機能を試すサンプルを作成しよう!
Hibernate Searchのサンプルプログラム
  HibernateUtilクラス
  社員の検索のソースコード
Hibernate Searchで全文検索システム構築
第1回 Hibernate Searchって何だ?
第2回 全文検索機能を試すサンプルを作成しよう!
関連記事
JBoss EAP+Luceneによる全文検索システム
JBoss Enterprise Application Platformの全貌
EJB 3を再考する

Think IT 過去人気記事

注目おすすめ情報

Think IT人気ライター BEST 5

IT製品/サービス資料ダウンロード
    おすすめのホワイトペーパー情報を準備中です