The catalog_controller.rb
can also be used to send custom parameters to Solr. There are several ways to implement custom Solr queries, this tutorial will focus on a way using the CatalogController
.
CatalogController
is a Rails controller and thus can take advantage of filters and other Rails controller behavior. “Filters are methods that are run before, after or “around” a controller action.” We can use this functionality to add customizations to our Solr request.
For example, let’s take a look at our “Language” facet. Solr is returning results from 12 different languages, but what if we want results limited to “Japanese”?
We can limit these results by using a filter in the catalog_controller.rb
file. Here is how to do that:
Create a private method (or set of methods) that will tap in to the Solr search parameters.
add_limit_language_behavior
method adds the limit_language
to the logic that processes the Solr search parameters. limit_language
then adds a filter query to limit results to documents that have “Japanese” in the language_facet
field.
Next we need to activate that method as a “before action” in the controller, for the “index” action only.
The language limiting query is now added to the Solr query, which in turn returns only results with “Japanese” in the language_facet
field.
Tapping into solr_search_params_logic
can be used to customize search results from Solr programmatically.