Luceneインデックスの上に構築されたHibernateSearchを使用しています。データベーステーブルに対してインデックスを作成すると、結果を返す際のパフォーマンスが向上します。
私の質問は、インデックスが作成されたら、結果をクエリすると、Hibernate Searchは作成されたインデックスを使用して元のデータベーステーブルから結果をフェッチしますか?または、結果を取得するためにデータベースにアクセスする必要はありませんか?
ありがとう!
Luceneインデックスの上に構築されたHibernateSearchを使用しています。データベーステーブルに対してインデックスを作成すると、結果を返す際のパフォーマンスが向上します。
私の質問は、インデックスが作成されたら、結果をクエリすると、Hibernate Searchは作成されたインデックスを使用して元のデータベーステーブルから結果をフェッチしますか?または、結果を取得するためにデータベースにアクセスする必要はありませんか?
ありがとう!
プロジェクションを使用しない限り、インデックスはクエリに一致する主キーのセットを識別するためにのみ使用され、データベースからエンティティをロードするために使用されます。
これには多くの理由があります。
ただし、完全に管理されたエンティティが必要ない場合は、プロジェクションを使用して、Stored.YESとして注釈を付けたフィールドをロードできます。一般的なパターンは、プロジェクションを使用して一致のプレビューを提供し、ユーザーがクリックして詳細を表示すると、その結果に一致する完全なエンティティをロードすることです。
デフォルトでは、Hibernateを介してオブジェクトが挿入、更新、または削除されるたびに、HibernateSearchはドキュメントに従ってそれに応じたLuceneインデックスを更新します
したがって、さらに検索すると、luceneインデックスのみを介してデータが生成されます。
インデックスがどのように機能するかを説明する別の質問