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:
    1. Extends from the AbstractSolrSearchQueryPreprocessor class, and
    2. Implements the SearchQueryPreprocessor interface.
  2. Implement the constructor method, which takes a component identifier as a string input parameter. Typically, component-specific logic is initialized here.
  3. Implement the invoke method which takes the SelectionCriteria object and an object array as input parameters. This SelectionCriteria object is a Java representation of the original search expression, where search criteria is stored as a control parameter object.
    The object array contains the native SolrQuery object which is initialized by:
    
    super.invoke(selectionCriteria, queryRequestObjects);
    
    There are two instance variables that can be used:
    iSelectionCriteria
    Java representation of the original search expression.
    iSolrQuery
    Java representation of native search query request objects.
  4. 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 WebSphere Commerce search interface.

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

Example

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