14.3.4.3. クエリー結果の制限
最後でも重要ですが、「ドルダウン」機能を実装するために、元のクエリーに追加の基準として返されたすべての
Facet
を適用できます。そのためには、FacetSelection
を使用できます。FacetSelection
は FacetManager
を介して利用可能であり、クエリー基準としてファセットを選択できます (selectFacets
)、ファセット制限を削除します (deselectFacets
)、すべてのファセット制限を削除します (clearSelectedFacets
) そして現在選択されているすべてのファセットを取得します (getSelectedFacets
)。例14.60「FacetSelection
のアプリケーションによるクエリー結果の制限」 例を示します。
例14.60 FacetSelection
のアプリケーションによるクエリー結果の制限
// create a fulltext query Query luceneQuery = builder.all().createQuery(); // match all query FullTextQuery fullTextQuery = fullTextSession.createFullTextQuery( luceneQuery, clazz ); // retrieve facet manager and apply faceting request FacetManager facetManager = fullTextQuery.getFacetManager(); facetManager.enableFaceting( priceFacetingRequest ); // get the list of Cd List<Cd> cds = fullTextQuery.list(); assertTrue(cds.size() == 10); // retrieve the faceting results List<Facet> facets = facetManager.getFacets( "priceFaceting" ); assertTrue(facets.get(0).getCount() == 2) // apply first facet as additional search criteria facetManager.getFacetGroup( "priceFaceting" ).selectFacets( facets.get( 0 ) ); // re-execute the query cds = fullTextQuery.list(); assertTrue(cds.size() == 2);