InfoQ

News

Hibernate Search:ドメインモデルの索引付き全文検索

作者 Ryan Slobojan, 翻訳者 佐野 徹郎 投稿日 2007年9月6日 午前12時44分

コミュニティ
Java
トピック
データアクセス,
検索
タグ
Hibernate

先ごろ、Hibernate Searchプロジェクトのセカンドベータが、新たにリリースされた。Hibernate Searchのプロジェクトリードであり、Hibernate AnnotationsおよびHibernate EntityManagerのプロジェクトリードでもある、エマニュエル・ベルナール(Emmanuel Bernard)に詳しい話を聞いた。エマニュエルによるとHibernate Searchプロジェクトの目標は、HibernateJPA(Java Persistence API)の利用者が、HibernateやJPAによって管理されるオブジェクトに対して、索引付きの全文検索を可能にすることにある。Hibernate Searchの主な機能を以下にあげる

  • Luceneとの統合 - Lucene は強力で効率的な検索エンジンとして確かな実績がある
  • 自動的なデータの挿入と更新 - Hibernateによってオブジェクトが追加または更新されると、索引もまた透過的に更新される
  • 様々の種類の複雑な検索のサポート - ワイルドカード検索、マルチワード検索、近似・同義語検索または、非常に高速な検索結果の順序付けを行うことができる
  • 検索のクラスタリング - Hibernate Searchは、JMSベースの非同期問い合わせ・索引付けシステムを含む、いくつかの組み込みのクラスタリングソリューションを持っている
  • Lucene APIのダイレクト呼び出し - 特別に複雑な問い合わせが必要なら、Lucene APIをダイレクトに利用することができる
  • 自動的なLuceneの管理 - Hibernate SearchはLuceneの索引を管理および最適化し、効率的にLucene APIを利用できるようにする

プロジェクトの主な目標は次の通りである。

  • 使いやすさ - HibernateのORMと同じように、Hibernate Searchはあなたの仕事の90%を行い、あなたをより難しい残りの仕事に集中させる
  • 既存のHibernateやJPAのプログラミングモデルとの一貫性 - 既存のプログラミングモデルとの自然な統合は「最初からの目標」である

エマニュエルは、これらの目標の具体的な実例をいくつか挙げてくれた。

  • HQLクエリーは、オブジェクトの生成方法を変えることで、検索クエリーに変換することができる。「通常はわずかなコードの変更」で、他(問い合わせの実行や結果の形式)はすべて変わらない
  • プロセスはブートストラップではない。なぜならば、Hibernate Searchの影響は、既存のHibernateやJPAの基盤に対して透過的であるから
  • 最小限2つのプロパティを、persistence.xmlまたはhibernate.cfg.xmlに設定する必要がある

エマニュエルは、最終的に3.0がリリースされる前に彼が行うもう少しの仕事である、問い合わせと索引の最適化について示唆した。

Hibernate Searchのコアコードは実際にかなり安定しています。それがベータである主な理由は、いくつかの拡張APIについて私たちがまだ確信を持てないからです。Hibernate Searchのコアは極めて柔軟で、たくさんのカスタム戦略を埋め込むことができます。それらは今までのところ、かなり安定していますが、私たちはAPIが安定していることに確信を持てる、完全な製品にしたいと思っています。

あなたがよく知っているとおり、オープンソースのプロジェクトは、それが完了した時にリリースされます。私に言えることは、夏は長く、私はたくさんの休暇を予定していない、ということです(笑)。

Hibernate Searchの戦略の是非について、興味深い議論も始まっている。サンジブ・ジバン(Sanjiv Jivan)はHibernate Searchの長所と短所についての見解を述べ、エマニュエル・ベルナールがサンジブの懸念に対して回答している。あなたはHibernate Searchをどのように見ますか?

(原文は2007年6月18日にリリースされました)

ブックマーク
digg+,
reddit+,
del.icio.us+,
dzone+,
Hatena

No comments

返信

特集コンテンツ一覧

トップスポーツチームの監督に教わる秘訣

この論文では、氏が発見した原則を要約し、その原則をいかにしてソフトウェア開発に応用するかを説明します。

事例研究:Dutch Railwaysのプロジェクトにおける分散拠点でのスクラム・プロジェクト

この記事では、私達がどのようにして大規模(240人月、10万行強)でインドとオランダの開発者も参加したスクラム・プロジェクトを成功させたのかを示しています。

Agile2008チーム参加レポート - 帰国そして変化

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。参加者はカンファレンスで各々の発表や、各セッションへの参加、諸外国のエンジニアとの出会い、ステージ上で DearXPを熱演などの様々な思い出を抱えて、無事日本に戻ってきました。

SilverlightとJavaのインターオペラビリティ

マイクロソフトのRobert Bellが、SilverlightとJavaを使用したインターオペラビリティのシナリオを紹介し、サンプルコードを例にとってアーキテクチャの手引きを提供します。

Agile2008 チーム参加レポート - カンファレンス参加編

Agileカンファレンスに「参加者としてだけでなく、発表者として参加しよう」を掲げたチームgoyattomは、サブミッションを提出し、7つのセッションが日本から選択されました。サブミッションが選択された人、そうでない人も含めて、個々の目的意識の確認、膨大なプログラムから聞きたいセッションの選択、旅行の準備、プレゼンテーションの準備の期間を終えて、無事当日を迎えました。

Agile2008 チーム参加レポート - 動機/準備編

筆者はアジャイルソフトウェア開発についての年に一度の国際会議であるAgile2008に初めて参加してきました。今年の日本からの参加者の数は14名にも及び、発表者は5名、受け持ったセッションは8つに及び、例年にない活躍を見せました。なぜ今年のAgile2008では、これほど多くの日本人が参加し発表に至ったのか? そのレポートをお届けします。

Javaトラブルシューティングメルマガ総集編 2008/08~09

エスエムジーでは、Java全般を対象にしたトラブルシューティングサービス「JaTS」を提供しています。この記事では、前回に引き続き、JaTSにて蓄積したトラブル事例とその解決ノウハウの一部をお送りしている「Javaトラブルシューティングメールマガジン」(JTSMM)の総集編として、過去2ヶ月のトラブル事例と追加情報をダイジェストとして提供いたします。

モデル駆動アプローチがうまく機能しない(しなくなる)8 つの理由

この記事では、モデル駆動アプローチがうまく機能しない、または機能しなくなることによって期待した結果が実現できなくなる 8 つの理由について書きたいと思います。