Creating a custom query preprocessor

A query preprocessor modifies the native SolrQuery object right before it is sent to the Solr server for processing.

Procedure

  1. Create a class that does the following actions:
    1. Extends from the AbstractSearchQueryPreprocessor class, and
    2. Implements the SearchQueryPreprocessor interface.
  2. Implement the invoke method, which takes the SearchCriteria object and a varargs as input parameters. This SearchCriteria object is a Java representation of the original search expression, where search criteria is stored as a control parameter object.
    The varargs contains the queryRequestObjects object, which is initialized by:
    super.invoke(SearchCriteria, queryRequestObjects);
    Two instance variables can be used:
    iSearchCriteria
    Java representation of the original search expression.
    queryRequestObjects
    Java representation of native search query request objects.
  3. Helper methods are available from its abstract class, which can be used for retrieving from the control parameters:
    
    String term = getControlParameterValue(SearchServiceConstants.CTRL_PARAM_SEARCH_TERM);
    

    For a list of supported control parameters, see HCL Commerce Search interface.

    For more information about the default query preprocessors, see HCL Commerce Search configuration file (wc-search.xml).

Example

The following download contains a code sample for creating a custom query preprocessor: