14.3.2.4. 結果について
クエリーの結果が適切でない場合、
Luke
ツールは結果を理解する際に役立ちます。ただし、Hibernate Search を使用すると、所定の結果 (特定のクエリー内) の Lucene Explanation
オブジェクトにアクセスできます。このクラスは Lucene ユーザーに非常に高度なものとみなされますが、オブジェクトの性質をよく理解することができます。特定の結果について Explanation オブジェクトにアクセスするには、以下のいずれかの方法があります。
- 使用
fullTextQuery.explain(int)
方法 - プロジェクションの使用
最初の方法は、ドキュメント ID をパラメーターとして取り、Explanation オブジェクトを返します。ドキュメント ID は、インジェクトと
FullTextQuery.DOCUMENT_ID
定数を使用して取得できます。
警告
ドキュメント ID はエンティティー ID に関連しません。これらの概念を混同しないように注意してください。
次の方法では、
FullTextQuery.EXPLANATION
定数を使用して Explanation
オブジェクトをプロジェクトします。
例14.48 プロジェクトを使用した Lucene の説明オブジェクトの取得
FullTextQuery ftQuery = s.createFullTextQuery( luceneQuery, Dvd.class )
.setProjection(
FullTextQuery.DOCUMENT_ID,
FullTextQuery.EXPLANATION,
FullTextQuery.THIS );
@SuppressWarnings("unchecked") List<Object[]> results = ftQuery.list();
for (Object[] result : results) {
Explanation e = (Explanation) result[1];
display( e.toString() );
}
Explanation オブジェクトは、Lucene クエリーを再度実行するときのように、必要とされる場合にのみ使用してください。