Skip to main content
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, and index 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.

Faceting

The course for Faceting focuses on how to use facets to ensure faster, smarter search results.

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.

Configuration