Configuración de la extensión personalizada de consulta xC

El punto final de /configuration se utiliza para añadir los detalles de configuración personalizados en el nodo de ZooKeeper. Hay un nodo raíz en ZooKeeper con el nombre /configuration y, dentro del nodo de la raíz, son nodos hijo donde puede añadir la configuración.

Los nodos disponibles son:
  1. Extensions xC
  2. wc-component
  3. Colores, organizados por idioma
  4. Filtros para ayudar en el proceso de lenguaje natural
  5. Unidades de medida, y
  6. Relevancia

Para registrar personalizaciones xC para el preproceso y el posprocesamiento de la solicitud de búsqueda real a este nodo hijo, pase el nodo de configuración del parámetro nodeName="xC" como una solicitud.

Por ejemplo,
http://data_environment_hostname:30921/search/resources/api/v2/configuration?nodeName=xC&envType=auth
Para obtener la especificación de la API de REST completa, consulte la API REST de consulta.

Ejemplo

A continuación, se muestra una estructura de ejemplo para una configuración 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" ] } ] } } ] }
Puede utilizar Java, como en el archivo siguiente 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; } }