Crear un proveedor de expresiones personalizado
Antes de empezar
- Ponga código Java de preprocesador y postprocesador de proveedor de expresiones personalizado de búsqueda en el directorio workspace_dir\search-logic-ext.
- Defina el perfil que utiliza su preprocesador, postprocesador o proveedor de expresiones personalizadas en el archivo de configuración workspace_dir\search-config-ext\src\runtime\config\com.ibm.commerce.search\wc-search.xml.
Procedimiento
-
Cree una clase que se extienda desde
com.ibm.commerce.search.internal.expression.provider.AbstractSearchExpressionProvider
e implemente la interfazcom.ibm.commerce.search.expression.provider.SearchExpressionProvider
. -
Implemente invoke que acepta el objeto
SearchCriteria
como parámetro de entrada. Este objetoSearchCriteria
es una representación Java de la expresión de búsqueda, donde cada criterio de búsqueda se almacena como un objeto de parámetro de control.Nota: Primero debe llamar al método siguiente para inicializar su clase abstracta:super.invoke(SearchCriteria);
La información que se almacena en estos objetos es procesada posteriormente por el
SolrSearchExpressionProcessor
y se convierte en una expresión Solr nativa para enviar al servidor Solr.Para ver una lista de los parámetros de control admitidos, consulte HCL Commerce Search Interfaz.
La siguiente lista muestra los Métodos de ayudante:- Recuperación
String term = getControlParameterValue(SearchServiceConstants.CTRL_PARAM_SEARCH_TERM);
- Almacenamiento
-
addControlParameterValue( SearchServiceConstants.CTRL_PARAM_SEARCH_INTERNAL_OPTIONAL_QUERY, searchExpression);
Para obtener más información sobre los proveedores de expresiones predeterminados, consulte HCL Commerce Search archivo de configuración (wc-search.xml).
Ejemplo
En este ejemplo, personalizará el proceso de clasificación de consultas Solr. En un postprocesador personalizado, puede añadir datos para las respuestas REST de búsqueda de una tabla de base de datos. Estos datos se devuelven en consultas junto con la respuesta de consulta Solr.
Descargue el archivo de ejemplo para los archivos .XML y .SQL que se utilizan en este ejemplo.
- Ejecute xgift.sql en la base de datos. Para Db2, utilice el mandato siguiente.
CREATE TABLE XGIFT ( CATENTRY_ID BIGINT NOT NULL, PART_NUMBER VARCHAR(256), ISGIFT SMALLINT, GIFTDESC VARCHAR(256), PRIMARY KEY (CATENTRY_ID) ); INSERT INTO XGIFT VALUES(10001, 'AuroraWMDRS-1', 1, 'This is a test gift desc for AuroraWMDRS-1'); INSERT INTO XGIFT VALUES(10002, 'AuroraWMDRS-2', 1, 'This is a test gift desc for AuroraWMDRS-2');
Nota: Cambie los valores en negrita por sus propios cantentryID y partnumber.Para bases de datos Oracle, utilice el mandato siguiente.CREATE TABLE XGIFT ( CATENTRY_ID NUMBER NOT NULL, PART_NUMBER VARCHAR(256), ISGIFT NUMBER(5), GIFTDESC VARCHAR(256), PRIMARY KEY (CATENTRY_ID) ); INSERT INTO XGIFT VALUES(10001, 'AuroraWMDRS-1', 1, 'This is a test gift desc for AuroraWMDRS-1'); INSERT INTO XGIFT VALUES(10002, 'AuroraWMDRS-2', 1, 'This is a test gift desc for AuroraWMDRS-2');
- Ponga los objetos CustomizedGiftPostprocessor.java y CustomizedExpressionProvider.java debajo de workspace_dir\search-logic-ext. CustomizedGiftPostprocessor.java extrae datos de la nueva tabla y compone una respuesta de consulta Solr para dar formato a la respuesta de REST de búsqueda. CustomizedExpressionProvider.java vuelve a escribir la consulta Solr para clasificar por precio en orden ascendente.
- Añada el código siguiente en wc-search.xml bajo workspace_dir\search-config-ext\src\runtime\config\com.ibm.commerce.search.
<<< <_config:profile name="IBM_findProductsByCategory" indexName="CatalogEntry"> <_config:query> <_config:provider classname="com.mycompany.search.internal.expression.provider.CustomizedExpressionProvider"/> <_config:postprocessor classname="com.mycompany.search.internal.expression.postprocessor.CustomizedGiftPostprocessor" /> </_config:query> </_config:profile> <_config:profile name="IBM_findProductByIds_Details" indexName="CatalogEntry"> <_config:query> <_config:postprocessor classname="com.mycompany.search.internal.expression.postprocessor.CustomizedGiftPostprocessor" /> </_config:query> </_config:profile> >>>
- Cree el proyecto y publique los cambios en el servidor.
- Reinicie el servidor de búsqueda.
- Realice una llamada REST para verificar la personalización de su postprocesador.
Asegúrese de que la respuesta incluyehttp://{searchhost}:{search-http-port}/search/resources/store/1/productview/byId/10001
isGift
ygiftDesc
en los campos de retorno y que los valores coincidan con los valores en la tablaXGIFT
.
Qué hacer a continuación
En tiempo de ejecución, es posible capturar la expresión que está almacenada en este objeto SelectionCriteria
, y la expresión Solr final que se envía al servidor Solr.
Para obtener instrucciones sobre cómo habilitar el rastreo, consulte Habilitar el rastreo y el registro para la HCL Commerce Search.
Habilite el rastreo, ejecute el escenario y busque Final Solr query
en el archivo trace.log.