To execute facet query using session query
method use toFacets
method.
Syntax
public FacetResults toFacets(List<Facet> facets);
public FacetResults toFacets(List<Facet> facets, int start);
public FacetResults toFacets(List<Facet> facets, int start, Integer pageSize);
public FacetResults toFacets(String facetSetupDoc);
public FacetResults toFacets(String facetSetupDoc, int start);
public FacetResults toFacets(String facetSetupDoc, int start, Integer pageSize);
Parameters |
|
|
facets |
List<Facet> |
List of facets required to perform a facet query (mutually exclusive with facetSetupDoc ). |
facetSetupDoc |
String |
Document key that contains predefined FacetSetup (mutually exclusive with facets ). |
start |
int |
number of results that should be skipped. Default: 0 . |
pageSize |
int |
maximum number of results that will be retrieved. Default: null . |
|
Return Value |
|
FacetResults |
Facet query results with query duration and list of results - one entry for each term/range as specified in [FacetSetup] document or passed in parameters. |
Example I
// passing facets directly
Facet facet1 = new Facet();
facet1.setName("Manufacturer");
Facet facet2 = new Facet();
facet2.setName("Cost_Range");
facet2.setMode(FacetMode.RANGES);
facet2.setRanges(Arrays.asList("[NULL TO Dx200.0]",
"[Dx300.0 TO Dx400.0]",
"[Dx500.0 TO Dx600.0]",
"[Dx700.0 TO Dx800.0]",
"[Dx900.0 TO NULL]"));
Facet facet3 = new Facet();
facet3.setName("Megapixels_Range");
facet3.setMode(FacetMode.RANGES);
facet3.setRanges(Arrays.asList( "[NULL TO Dx3.0]",
"[Dx4.0 TO Dx7.0]",
"[Dx8.0 TO Dx10.0]",
"[Dx11.0 TO NULL]"));
List<Facet> facets = Arrays.asList(facet1, facet2, facet3);
FacetResults facetsResult = session.query(Camera.class).toFacets(facets);
Map<String, FacetResult> results = facetsResult.getResults();
Example II
// using predefined facet setup
Facet facet1 = new Facet();
facet1.setName("Manufacturer");
Facet facet2 = new Facet();
facet2.setName("Cost_Range");
facet2.setMode(FacetMode.RANGES);
facet2.setRanges(Arrays.asList("[NULL TO Dx200.0]",
"[Dx300.0 TO Dx400.0]",
"[Dx500.0 TO Dx600.0]",
"[Dx700.0 TO Dx800.0]",
"[Dx900.0 TO NULL]"));
Facet facet3 = new Facet();
facet3.setName("Megapixels_Range");
facet3.setMode(FacetMode.RANGES);
facet3.setRanges(Arrays.asList( "[NULL TO Dx3.0]",
"[Dx4.0 TO Dx7.0]",
"[Dx8.0 TO Dx10.0]",
"[Dx11.0 TO NULL]"));
List<Facet> facets = Arrays.asList(facet1, facet2, facet3);
session.store(new FacetSetup("facets/CameraFacets", facets));
session.saveChanges();
FacetResults facetResults = session.query(Camera.class, "Camera/Costs").toFacets("facets/CameraFacets");
Map<String, FacetResult> results = facetResults.getResults();
Converting Query into FacetQuery
public FacetQuery toFacetQuery(List<Facet> facets);
public FacetQuery toFacetQuery(List<Facet> facets, int start);
public FacetQuery toFacetQuery(List<Facet> facets, int start, Integer pageSize);
public FacetQuery toFacetQuery(String facetSetupDoc);
public FacetQuery toFacetQuery(String facetSetupDoc, int start);
public FacetQuery toFacetQuery(String facetSetupDoc, int start, Integer pageSize);
Parameters |
|
|
facets |
List<Facet> |
List of facets required to perform a facet query (mutually exclusive with facetSetupDoc ). |
facetSetupDoc |
String |
Document key that contains predefined FacetSetup (mutually exclusive with facets ). |
start |
int |
number of results that should be skipped. Default: 0 . |
pageSize |
int |
maximum number of results that will be retrieved. Default: null . |
|
Return Value |
|
FacetQuery |
Instance of FacetQuery containing all options set in query . Can be used with multiFacetedSearch from advanced session operations or with commands directly. |
Example
FacetQuery facetQuery1 = session.query(Camera.class)
.toFacetQuery("facets/CameraFacets1");
FacetQuery facetQuery2 = session.query(Camera.class)
.toFacetQuery("facets/CameraFacets2");
FacetResults[] results = session.advanced()
.multiFacetedSearch(facetQuery1, facetQuery2);
FacetResults facetResults1 = results[0];
FacetResults facetResults2 = results[1];