第3章 設定


3.1. Directory 構成

Apache Lucene には、インデックスファイルを保存する Directory の表記が存在します。Directory 実装はカスタマイズできますが、Lucene はファイルシステム (FSDirectoryProvider) とメモリ内 (RAMDirectoryProvider) 実装でバンドルされます。DirectoryProvider は Lucene Directory を Hibernate Search により抽象化し、基礎となる Lucene リソースの設定と初期化を処理します。表3.1「ビルトインの Directory Provider 一覧」 は Hibernate Search でバンドルされるディレクトリプロバイダのリストを示します。
Expand
表3.1 ビルトインの Directory Provider 一覧
クラス 説明 プロパティ
org.hibernate.search.store.RAMDirectoryProvider メモリベースのディレクトリ。ディレクトリは @Indexed.index エレメントにより一意に (同じデプロイメント単位で) 識別されます。 none
org.hibernate.search.store.FSDirectoryProvider ファイルシステムベースのディレクトリ。使用されるディレクトリは <indexBase>/< indexName > です。
indexBase : ベースディレクトリ
indexName: @Indexed.index をオーバーライドします (共有されたインデックスの場合に役に立ちます)。
locking_strategy : オプション。「LockFactory の設定」 を参照してください。
org.hibernate.search.store.FSMasterDirectoryProvider
ファイルシステムベースのディレクトリ。FSDirectoryProvider と同様。インデックスを定期的にソースディレクトリ (コピーディレクトリとも呼ばれます) にコピーします。
更新期間の推奨値は情報をコピーする時間よりも大きい (最低) 50%です (デフォルトの 3600 秒 - 60 分)。
コピーは平均コピー時間を短縮する差分コピーメカニズムに基づいています。
DirectoryProvider は通常、JMS バックエンドクラスタのマスターノードで使用されます。
buffer_size_on_copy の最適化は、オペレーティングシステムと利用可能な RAM に依存します。16 〜 64MB の値を使用した場合に良い結果が得られると報告したユーザーがほとんどです。
indexBase: ベースのディレクトリ
indexName: @Indexed.index をオーバーライドします (共有されたインデックスの場合に役に立ちます)。
sourceBase: ソース (コピー) ベースディレクトリ
source: ソースディレクトリのサフィックス (デフォルト値は @Indexed.index)。実際のソースディレクトリ名は <sourceBase>/<source> です。
refresh: 秒単位の更新期間 (更新期間ごとにコピーが行われます)
buffer_size_on_copy: 単一ローレベルコピー命令で移動する MegaBytes の量。デフォルト値は 16MB です。
locking_strategy : オプション。「LockFactory の設定」 を参照してください。
org.hibernate.search.store.FSSlaveDirectoryProvider
ファイルシステムベースのディレクトリ。FSDirectoryProvider と似ていますが通常でマスターバージョン (ソース) を取得します。ロックと不整合な検索結果を回避するために、2 つのローカルコピーが保持されます。
更新期間の推奨値は情報をコピーする時間よりも大きい (最低) 50%です (デフォルトの 3600 秒 - 60 分)。
コピーは平均コピー時間を短縮する差分コピーメカニズムに基づいています。
DirectoryProvider は通常、JMS バックエンドを使用したスレーブノードで使用されます。
buffer_size_on_copy の最適化は、オペレーティングシステムと利用可能な RAM に依存します。16 〜 64MB の値を使用した場合に良い結果が得られると報告したユーザーがほとんどです。
indexBase: ベースのディレクトリ
indexName: @Indexed.index をオーバーライドします (共有されたインデックスの場合に役に立ちます)。
sourceBase: ソース (コピー) ベースディレクトリ
source: ソースディレクトリのサフィックス (デフォルト値は @Indexed.index)。実際のソースディレクトリ名は <sourceBase>/<source> です。
refresh: 秒単位の更新期間 (更新期間ごとにコピーが行われます)
buffer_size_on_copy: 単一ローレベルコピー命令で移動する MegaBytes の量。デフォルト値は 16MB です。
locking_strategy : オプション。「LockFactory の設定」 を参照してください。
ビルトインのディレクトリプロバイダがニーズに適合しない場合は org.hibernate.store.DirectoryProvider インターフェースを実装することで独自のディレクトリプロバイダを記述することができます。
インデックス化された各エンティティは Lucene インデックスに関連付けられます (インデックスは複数のエンティティで共有可能ですが通常は不要です)。 hibernate.search.indexname でプレフィックスされるプロパティでインデックスを設定することができます。 全インデックスに継承されるデフォルトのプロパティはプレフィックスの hibernate.search.default. を使用して定義することができます。
特定のインデックスのディレクトリプロバイダを定義するには hibernate.search.indexname.directory_provider を使用します。

例3.1 ディレクトリプロバイダの設定

hibernate.search.default.directory_provider org.hibernate.search.store.FSDirectoryProvider
hibernate.search.default.indexBase=/usr/lucene/indexes
hibernate.search.Rules.directory_provider org.hibernate.search.store.RAMDirectoryProvider
Copy to Clipboard Toggle word wrap
以下に適用します。

例3.2 @Indexedindex パラメータを使用したインデックス名の指定

@Indexed(index="Status")
public class Status { ... }

@Indexed(index="Rules")
public class Rule { ... }
Copy to Clipboard Toggle word wrap
すると、 Status エンティティがインデックス化される /usr/lucene/indexes/Status 内にファイルシステムディレクトリを作成し、 Rule エンティティがインデックス化される Rules という名前のインメモリディレクトリを使用します。
ディレクトリプロバイダやベースディレクトリのような共通のルールを容易に定義して、 あとでこれらのデフォルト値をインデックスごとに上書きすることができます。
独自の DirectoryProvider を記述すると、 この設定メカニズムを利用することもできます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat