Hibernateグループ(リンク)が公開しているオープンソースのドメインモデル検索フレームワークであるHibernate Searchの最新版(リンク)は、宣言型で動的な検索アナライザモデルの他に、インデクシングや問合せ時の性能改善をサポートしている。Hibernate Searchの開発チームは先ごろ、検索フレームワークのバージョン3.1をリリースしたことを発表した。この新しいバージョンにはインデクシングや問い合わせのための機能も含まれている。その中には、term vectorのサポート、問い合わせ時のスコープ付きアナライザへのアクセス、Results Explanationオブジェクトへのアクセスが含まれている。
アナライザ・モデル:
- 新しいアナライザモデルは、音声近似やn-gram近似、同義語による検索、ストップワードによるフィルタリング、省略の補正、アクセントのない検索のような機能を使用したり構成するように、宣言的に設定することができる。
- アナライザは、Apache Solr(リンク)の検索ライブラリを利用して、トークナイザやフィルタのセットとして構成することができる。
- 動的アナライザ:これらによって与えられたエンティティが実行時に使用されるアナライザを定義できるようになるが、これは言語があるエンティティのインスタンスから別のものに変わるマルチ言語をサポートするアプリケーションで有用である。
インデクシング:
インデクシング時の性能改善には以下のものが含まれている。
- 手動でのインデクシングやインデックス書き込みの、よりすぐれたコントロール(RAMの消費量や非複合ファイルフォーマットのフラグなど)。
- term vectorやカスタム・シミラリティのサポート。
- 大きなインデックスのリプリケーションの、より手厚いサポート。
- インデクシング中のコンテンションやロックの時間の改善と、インデックスのオープン/クローズの削減。
- インデクシングをディレクトリ毎に並列で実行。
問合せ:
問合せ時の性能に追加された新機能には以下のものがある。
- 問合せ時に再利用しやすいように、エンティティ・スコープや名前つきのアナライザを公開。
- フィルタ結果(DocIdSet)は宣言的にキャッシュ可能。
- より優れたデバッグ情報のため、問合せ結果のExplanationを公開。
- マルチ・エンティティ検索上のデータベースのラウンドトリップ数を削減。
- より高速なLuceneの単一なエンティティのタイプを含むインデックス問合せと、(可能な場合は)文書の必要なフィールドだけを読み込むことによるLuceneのI/O消費量の削減。
- 投影されたプロパティの性能向上(生のLuceneの呼び出しに比べ、目立ったオーバーヘッドはない)。
- (ページネーションとgetResultSize()呼び出し中の)ドキュメント読み込みの削減。
- 高速なインデックスの再オープン(変更されなかったセグメントを開けたままにしておく)とインデックスリーダーの並行処理の向上(読み込み専用フラグの利用)。
Emmanuel Bernard氏は新しいリリースとその機能についてブログに投稿している(リンク)。その中にはロギング・フレームワークとしてのSLF4J(リンク)の利用や、Lucene 2.4、Hibernate Core 3.3、JDK 5.0(リンク)へのマイグレーションが含まれている。Hibernate Searchは非クラスタ化モードとクラスタ化モードで動作し、同期インデックス更新と非同期インデックス更新を提供しており、応答時間やスループット、インデックスの更新の中から選べるオプションがある。従来のすべてのHibernateのパターン、特にJBoss Seam(リンク)で利用されている長い(アトミックな)対話パターンとも連携する。
最新リリースはHibernateグループのサイトからダウンロード可能であり(リンク)、更新履歴はJIRAで(リンク)入手可能である。このバージョンへのマイグレーションは全てのユーザに推奨される(マイグレーションガイドを参照(リンク))。ロードマップ(リンク)にはHibernate Searchチームがこのフレームワークの次期リリースでターゲットとしている新機能が示されている。
原文はこちらです:http://www.infoq.com/news/2008/12/hibernate-search-3.1-release