You can order facet values based on the browsed category. For example, you can ensure
that one computer manufacturer’s products top the search results list when the customer searches
under Electronics. When the same customer does the same search under the Baby/Kids category, a
different manufacturer can top that list.
About this task
The order in which results are displayed can be set in the post-processing phase that follows
successful query processing. You can enable facet value sequencing by extending
SolrRESTSearchFacetQueryPostprocessor
in a new post-processor class, and
registering it with the search profile you want to use.
Procedure
-
Enable ordering of facet values.
-
Create a post-processor class, for example
SolrRESTSearchCustomFacetQueryPostprocessor
. This new class is an extension of the
existing SolrRESTSearchFacetQueryPostprocessor
class.
-
Ensure that the new post-processor class overrides the following protected method
protected Map<String, String> getFacetsAndOrderedSequences(String categoryId, List<String> facetFields)
Following is the signature of the default SolrRESTSearchFacetQueryPostprocessor
protected method. The extended class must override this method and return the Map object.
/**
* This method returns the desired ordered sequences of facet values of facet fields.
* In the map, <br> Facet field name is the key and comma seperated desired ordered
* sequence is the value. <br>
* e.g :
* mfName_ntk_cs=Borsati,Gusso,Versatil,Albini,Hermitage Collection,Luigi Valenti <br>
* ads_f10001_ntk_cs=Gray,Blue,Green,Black <br>
*
* @param categoryId, is the current page category Id
* @param facetFields, is the list of available facet fields whose values can be
* reordered.
*
* @return facetAndValueMap, is the Map object of Facet field name (Key) and desired
* ordered sequence (Values). <br>
*/
protected Map<String, String> getFacetsAndOrderedSequences(String categoryId, List<String> facetFields)
-
Enable the Search processor to use the new facet value sequencing logic.
-
Edit or create the file
workspace_dir\WC\xml\config\com.ibm.commerce.catalog-ext\wc-search.xml.
-
Add the search profiles
IBM_findProductsByCategory_Summary
and
IBM_findProductsByCategory
to the file. Each search profile contains a
postprocessor definition for the class you created in Step 1.a. To ensure that the class is used
exclusively, disable the default post-processor,
SolrRESTSearchFacetQueryPostprocessor
, in both profiles (as shown in the bold text
in the following sample).
<_config:profile name="IBM_findProductsByCategory" indexName="CatalogEntry">
<_config:query>
<_config:postprocessor
classname="com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchFacetQueryPostprocessor"
enabled="false"/>
<_config:postprocessor
classname="com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCustomFacetQueryPostprocessor" />
</_config:query>
</_config:profile>
<_config:profile name="IBM_findProductsByCategory_Summary" indexName="CatalogEntry">
<_config:query>
<_config:postprocessor
classname="com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchFacetQueryPostprocessor"
enabled="false"/>
<_config:postprocessor
classname="com.ibm.commerce.foundation.server.services.rest.search.postprocessor.solr.SolrRESTSearchCustomFacetQueryPostprocessor" />
</_config:query>
</_config:profile>