In this post we're going to look at a couple of Solr Facet Queries in Spring. We're going to take the Product Listing from NixMash Spring and create two Facet lists. The first will be a simple two-line output based on whether the products are available or not. The second will be a facet based on Product Categories.
Here's a ProductRepository Method. We create a FacetQuery object and specify what field we want our Facets based on, Product.AVAILABLE_FIELD.
Next we're going to generate a Facet output based on the Product Category. We'll see it's very similar to our Facet by Availability except we're setting the Page Size with FacetQuery setFacetOptions(). I just wrote a post on setting FacetPage Size if you want to know more about that.
For fun we'll look at an alternative approach to generating a Facet List by Category where JPA Annotations do most of the heavy lifting. Cool, huh?
One of the nice features of Solr Facets is that you can drill down through the lists to view individual items or sub lists. We're simply going to display the results in Console.
Here is the code we'll use to generate the output for our Faceted Lists by Availability and Category. We create a FacetPage<Product> object from our Solr Facet Query which we use to populate a FacetFieldEntry Page listing we'll use for our output.
Here's the output of our two-line report on Product Availability.
Our Facet Listing by Category, all 11 of them!