Vous pouvez commander des valeurs de facettes en fonction de la catégorie parcourue. Par exemple, vous pouvez vous assurer que les produits d'un fabricant d'ordinateurs figurent en tête de la liste des résultats de recherche lorsque le client effectue une recherche sous Electronique. Lorsque le même client effectue la même recherche dans la catégorie Bébé/Enfants, un fabricant différent peut se hisser en tête de cette liste.
Pourquoi et quand exécuter cette tâche
L'ordre dans lequel les résultats sont affichés peut être défini dans la phase de post-traitement qui suit le traitement réussi de la requête. Vous pouvez activer le séquençage de la valeur des facettes en étendant SolrRESTSearchFacetQueryPostprocessor dans une nouvelle classe post-processeur et en l'enregistrant avec le profil de recherche que vous souhaitez utiliser.
Procédure
-
Activez l'ordre des valeurs des facettes.
-
Créez une classe post-processeur, par exemple
SolrRESTSearchCustomFacetQueryPostprocessor. Cette nouvelle classe est une extension de la classe SolrRESTSearchFacetQueryPostprocessor existante.
-
Vérifiez que la nouvelle classe post-processeur remplace la méthode protégée suivante :
protected Map<String, String> getFacetsAndOrderedSequences(String categoryId, List<String> facetFields)
Voici la signature de la méthode protégée SolrRESTSearchFacetQueryPostprocessor par défaut. La classe étendue doit remplacer cette méthode et renvoyer l'objet Mappage.
/**
* 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)
-
Activez le processeur Recherche pour utiliser la nouvelle logique de séquençage de valeurs des facettes.
-
Modifier ou créer le fichier workspace_dir\WC\xml\config\com.ibm.commerce.catalog-ext\wc-search.xml.
-
Ajoutez les profils de recherche
IBM_findProductsByCategory_Summary et IBM_findProductsByCategory au fichier. Chaque profil de recherche contient une définition de post-processeur pour la classe que vous avez créée à l'étape 1.a. Pour vous assurer que la classe est utilisée exclusivement, désactivez le post-processeur par défaut, SolrRESTSearchFacetQueryPostprocessor, dans les deux profils (comme indiqué dans le texte en gras dans l'exemple suivant).
<_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>