Configuration de l'extension personnalisée xC de Query

Le nœud final /configuration est utilisé pour ajouter les détails de configuration personnalisés dans le nœud ZooKeeper. Il y a un nœud racine dans ZooKeeper portant le nom /configuration, et, à l'intérieur du nœud racine se trouvent des nœuds enfant où vous pouvez ajouter la configuration.

Les nœuds disponibles sont les suivants :
  1. Extensions xC
  2. wc-component
  3. Couleurs, organisées par langue
  4. Filtres pour faciliter le traitement du langage naturel
  5. Unités de mesure, et
  6. Pertinence

Pour enregistrer les personnalisations xC pour le pré et le post-traitement de la requête de recherche réelle au niveau de ce nœud enfant, transmettez le nœud de configuration au paramètre nodeName="xC" en tant que requête.

Par exemple,
http://data_environment_hostname:30921/search/resources/api/v2/configuration?nodeName=xC&envType=auth
Pour obtenir la spécification complète de l'API REST, voir API REST Query.

Exemple

Voici un exemple de structure pour une configuration xC :
{ "preProcess": [ { "storeId" : "1", "endpoint": { "query": "/productview/bySearchTerm/pre", "xC": "/commerceue/extension/search/productview/preBySearchTerm", "properties": [ {} ] } } ], "postProcess": [ { "storeId" : "1", "endpoint": { "query": "/productview/bySearchTerm/post", "xC": "/commerceue/extension/search/productview/postBySearchTerm", "properties": [ { "fields": [ "name", "shortDescription", "UserData" ] } ] } } ] }
Vous pouvez utiliser Java, comme dans le fichier suivant CustomProductViewResource.java :
package com.hcl.commerce.search.rest; /* * Licensed Materials - Property of HCL Technologies Limited. (C) Copyright HCL Technologies Limited 1996, 2020. */ import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/productview") public class CustomProductViewResource { /** * This method is use to add the search criteria. */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(value = "/preBySearchTerm", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity preFindProductsBySearchTerm(@RequestBody Map criteria) throws Exception { ArrayList list = (ArrayList) criteria.get("content"); List filter = new ArrayList(); filter.add("manufacturer.text:\"manufacturerName\""); Map filterMap = new HashMap(); filterMap.put("_wcf.search.internal.filterquery", filter); list.add(filterMap); criteria.put("content", list); ResponseEntity result = new ResponseEntity(criteria, HttpStatus.OK); return result; } /** * This method is use to manipulate the data post from server. */ @SuppressWarnings({ "rawtypes", "unchecked" }) @RequestMapping(value = "/postBySearchTerm", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity postFindProductsBySearchTerm(@RequestBody Map response) throws Exception { ArrayList list = (ArrayList) response.get("content"); for (Object obj : list) { if (obj instanceof Map) { Map m = (Map) obj; m.put("name", "Custom :: " + m.get("name")); } } ResponseEntity result = new ResponseEntity(response, HttpStatus.OK); return result; } }