8.3. IndexReader の使用
Lucene のクエリは
IndexReader
で実行されます。Hibernate Search はパフォーマンスを最大化するためにすべてのインデックスリーダーをキャッシュします。コードはこのキャッシュされたリソースにアクセスできますが、 "good citizen" ルールに従う必要があります。
例8.3 IndexReader
へのアクセス
ReaderProvider (「リーダー方針」 で説明) はディレクトリプロバイダにより参照されたインデックス上で IndexReader をオープンにします。この
IndexReader
は複数のクライアントで共有されるため、以下のルールに従う必要があります。
- indexReader.close() は呼び出さず、常に readerProvider.closeReader(reader) を呼び出します (理想的には Finally Block で)。
- 変更操作にはこの
IndexReader
を使用しないでください (例外が発生します)。読み取り/書き込みインデックスリーダーを使用する場合は、Lucene Directory オブジェクトからオープンします。
これらのルール以外に、特にネイティブクエリを実行するために IndexReader を自由に使用できます。共有された
IndexReader
を使用すると、ほとんどのクエリが効率的になります。