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 :
- Extensions xC
- wc-component
- Couleurs, organisées par langue
- Filtres pour faciliter le traitement du langage naturel
- Unités de mesure, et
- 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=authPour 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; } }