Field FacetQuery pipeline stage configuration specifications
The Field Facet query pipeline stage is used to add a link:Solr Field Facet query to the search query pipeline.
A field facet query computes the top values for a field and returns the list of those values along with a count of the subset of documents in the search results which match that term. Field faceting works best over fields which contain a single label or set of labels from a finite, controlled lexicon such as product category. Facet field parameters can be tuned for performance, see: Facet Field Configuration.
It is possible to specify more than one field facets. For each field facet you must specify the field name plus the following additional parameters:
-
Limit. The maximum number of terms to be returned. Default 100.
-
Offset. The number of top facet values to skip in the response. Default 0.
-
Sort. The order in which to list facet values:
count
ordering is by documents per term, descending, andindex
ordering is sorted on term values themselves. -
Missing. The number of documents in the results set which have no value for the facet field.
-
Choice of facet method (advanced). Specify Solr algorithm used to calculate facet counts. (See Facet Method Configuration for details). One of:
-
enum
. Small number of distinct categories. -
fc
("field cache"). Many different values in the field, each document has low number of values, multi-valued field. -
fcs
("single value string fields"). Good for rapidly changing indexes.
-
For further details see: Solr Faceting Overview.
Query pipeline stage condition examples
Stages can be triggered conditionally when a script in the Condition field evaluates to true. Some examples are shown below.
Run this stage only for mobile clients:
params.deviceType === "mobile"
Run this stage when debugging is enabled:
params.debug === "true"
Run this stage when the query includes a specific term:
params.q && params.q.includes("sale")
Run this stage when multiple conditions are met:
request.hasParam("fusion-user-name") && request.getFirstParam("fusion-user-name").equals("SuperUser");
!request.hasParam("isFusionPluginQuery")
The first condition checks that the request parameter "fusion-user-name" is present and has the value "SuperUser". The second condition checks that the request parameter "isFusionPluginQuery" is not present.