Création d'un fournisseur d'expressions personnalisé
Avant de commencer
- Placez le code Java du pré-processeur et post-processeur du fournisseur d'expressions personnalisés de recherche et le code Java dans le répertoire workspace_dir\search-logic-ext.
- Définissez le profil utilisé par votre fournisseur d'expressions personnalisés, votre pré-processeur ou votre post-processeur dans le fichier de configuration workspace_dir\search-config-ext\src\runtime\config\com.ibm.commerce.search\wc-search.xml.
Procédure
-
Créez une classe qui s'étend à partir de
com.ibm.commerce.search.internal.expression.provider.AbstractSearchExpressionProvideret implémente l'interfacecom.ibm.commerce.search.expression.provider.SearchExpressionProvider. -
Implémentez l'appel qui prend l'objet
SearchCriteriacomme paramètre d'entrée. Cet objetSearchCriteriaest une représentation Java de l'expression de recherche, où chaque critère de recherche est stocké en tant qu'objet de paramètre de contrôle.Remarque : Vous devez d'abord appeler la méthode suivante pour initialiser sa classe abstraite :super.invoke(SearchCriteria);Les informations stockées dans ces objets sont traitées ultérieurement par
SolrSearchExpressionProcessoret converties en expression Solr native pour être envoyées au serveur Solr.Pour obtenir une liste des paramètres de contrôle pris en charge, voir HCL Commerce Search Interface.
La liste suivante affiche les méthodes auxiliaires :- Extraction
String term = getControlParameterValue(SearchServiceConstants.CTRL_PARAM_SEARCH_TERM);- Stockage de en cours
-
addControlParameterValue( SearchServiceConstants.CTRL_PARAM_SEARCH_INTERNAL_OPTIONAL_QUERY, searchExpression);
Pour plus d'informations sur les fournisseurs d'expression par défaut, voir HCL Commerce Search fichier de configuration (wc-search.xml).
Exemple
Dans cet exemple, vous personnalisez le processus de tri de requête Solr. Dans un post-processeur personnalisé, vous ajoutez des données pour les réponses REST de recherche à partir d'une table de base de données. Ces données sont renvoyées dans les requêtes en plus de la réponse de requête Solr.
Téléchargez le fichier exemple pour les fichiers .XML et .SQL utilisés dans cet exemple.
- Exécutez xgift.sql au niveau de votre base de données. Pour Db2, utilisez la commande suivante :
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');Remarque : Modifiez les valeurs en gras pour vos propres valeurs cantentryID et partnumber.Pour les bases de données Oracle, utilisez la commande suivante.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'); - Placez les objets CustomizedGiftPostprocessor.java et CustomizedExpressionProvider.java sous workspace_dir\search-logic-ext. CustomizedGiftPostprocessor.java extrait des données de la nouvelle table et compose une réponse de requête Solr pour formater la réponse REST de recherche. CustomizedExpressionProvider.java réécrit la requête Solr pour trier par prix dans l'ordre croissant.
- Ajoutez le code suivant dans votre fichier wc-search.xml sous 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> >>> - Créez votre projet et publiez les modifications sur le serveur.
- Redémarrez le serveur Recherche.
- Effectuez un appel REST pour vérifier la personnalisation de votre post-processeur.
Assurez-vous que la réponse incluthttp://{searchhost}:{search-http-port}/search/resources/store/1/productview/byId/10001isGiftetgiftDescdans les zones de retour et que les valeurs correspondent aux valeurs de la tableXGIFT.
Que faire ensuite
Pendant l'exécution, il est possible de capturer l'expression stockée dans cet objet SelectionCriteria et l'expression Solr finale envoyée au serveur Solr.
Pour obtenir des instructions sur la façon d'activer le suivi, voir Activation du traçage et de la journalisation pour HCL Commerce Search.
Activez le suivi, exécutez votre scénario et recherchez Final Solr query dans le fichier trace.log.