Configuration de votre profil de recherche personnalisé

ZooKeeper stocke les profils nommés dans l'un de ses nœuds. Vous pouvez créer, mettre à jour, supprimer et obtenir des profils à l'aide du nœud final du service Query. Pour plus d'informations sur les profils HCL Commerce Search, voir Rechercher dans les profils.

Spécification du document de nœud final et de profil

Le nœud final du profil est :
https://data_environment_hostname:30921/search/resources/api/v2/documents/profiles/profileName
Pour la spécification d'API REST complète, voir API REST de Query.
Chaque document de profil est au format .json et possède la structure ci-dessous. (Cet exemple montre la fonctionnalité de surlignage d'Elasticsearch ; pour plus d'informations sur cette fonctionnalité, voir Surligneurs dans le guide Elasticsearch.)
{ "indexName": "string", "parentProfileName": "string", "profileName": "string", "query": { "highlight": { "fields": [ "name", "fieldName" ], "simplePre": "<strong><span class=font2>", "simplePost": "</span></strong>" }, "params": [ { "paramName": "value" } ], "postprocessor": [ "postprocessorClass" ], "preprocessor": [ "preprocessorClass" ], "provider": [ "providerClass" ], "queryFields": [ "field1", "filed2" ], "responseFields": [ "field1", "filed2" ], "sortFields": { "key": "value" }, "spellcheck": { "limit": "5" }, "group" : { "enable" : "false", "sort" : "score desc", "field" : "relationship.product.group" }, "hero" : { "overrideFieldName" : "url.thumbnail", "showGroupPriceRange" : "false", "field" : { "7741124012283334335" : "Hero" } } } }

Pour une description des noms et valeurs des champs, ainsi que des pré- et postprocesseurs disponibles, voir Propriétés des profils de recherche.

HCL Commerce Version 9.1.13.0 or later

Profils de recherche avancée

Vous pouvez utiliser un profil de recherche avancée si l'image du produit Hero est activée. Lorsque le regroupement est activé pour l'API de recherche par termes, celle-ci utilise le profil de recherche avancée pour obtenir les détails du propriétaire du groupe (produit parent). L'API de recherche par termes utilise le profil HCL_findProductsBySearchTerm, lequel possède une propriété de profil de recherche avancée ayant pour valeur HCL_findCatalogEntryById. Définissez le profil de recherche avancée comme suit :
{ "parentProfileName" : "", "profileName" : "HCL_findProductsBySearchTerm", "lookupProfileName" : "HCL_findCatalogEntryById", "indexName" : "product", "query" : {
En interne, le processeur SearchRelevancyByProductGroupingPostprocessor utilise le profil de recherche avancée pour récupérer les détails du produit. De même, si une image de produit Hero est activée pour la navigation par catégorie, le profil HCL_findProductsByCategory voit sa propriété de profil de recherche avancée définie sur la valeur HCL_findCatalogEntryByIdForBrowse. En interne, le processeur SearchBrowseRelevancyByProductGroupingPostprocessor utilise le profil de recherche avancée pour récupérer les détails du produit.
{ "parentProfileName" : "", "profileName" : "HCL_findProductsByCategory", "lookupProfileName" : "HCL_findCatalogEntryByIdForBrowse", "indexName" : "product", "query" : {

Des profils de recherche avancée peuvent être définis dans le profil de recherche à l'aide de la propriété lookupProfileNames, avec une paire clé-valeur. Les profils de recherche avancée servent à récupérer les détails de SKU de produit/SKU de variante/composant et d'association de marchandisage pour le produit. Par exemple, supposons que vous appeliez l'API productview/byIds avec le profil HCL_findProductByIds_Details. Ce profil présente des postprocesseurs définis pour récupérer les détails de SKU, de composant et d'association de marchandisage. Ces postprocesseurs utilisent un profil pour récupérer les détails respectifs.

Le profil HCL_findProductByIds_Details est configuré avec les profils de recherche avancée suivants. Si vous remplacez le profil, assurez-vous de ne pas modifier la clé LookupProfileNames. Si aucun profil de recherche avancée n'est spécifié, l'appel reviendra aux profils par défaut mentionnés ci-dessous dans le profil HCL_findProductByIds_Details par défaut.
{ "profileName" : "HCL_findProductByIds_Details", "indexName" : "product", "lookupProfileNames" : { "productSKU" : "HCL_findCatalogEntrySKUs", "variantSKU" : "HCL_findCatalogEntrySKUsByVariantIds", "component" : "HCL_findCatalogEntryComponents", "merchandisingAssoc" : "HCL_findCatalogEntryAssociatedMerchandising" }, "query" : {
Note:
SearchCatalogEntryViewSKUQueryPostprocessor
Ce postprocesseur utilise le profil de remorquage ci-dessous pour récupérer les détails de SKU de produit et de variante :
HCL_findCatalogEntrySKUs HCL_findCatalogEntrySKUsByVariantIds
SearchCatalogEntryViewComponentsQueryPostprocessor
Ce postprocesseur utilise le profil HCL_findCatalogEntryComponents pour récupérer les détails des composants.
SearchCatalogEntryViewMerchandisingAssocQueryPostprocessor
Ce postprocesseur utilise le profil HCL_findCatalogEntryAssociatedMerchandising pour récupérer les détails de l'association de marchandisage.
  • Les profils de recherche peuvent être personnalisés de manière à utiliser des profils de recherche avancée personnalisés dans l'éventualité où vous auriez besoin de limiter les champs de réponse renvoyés pour les détails de SKU/composant/marchandisage.
  • Lors de la personnalisation du profil de recherche avancée, ne supprimez pas du profil le champ de réponse qui commence par « relation ».
  • lookupProfileName et lookupProfileNames sont différents. lookupProfileName sert à récupérer les détails du produit lorsqu'une image de produit Hero est activée, sur la base des détails de parentId de SKU. lookupProfileNames sert à récupérer les détails de SKU/variante/composant et d'association de marchandisage.
  • Vous pouvez utiliser les exemples de profils personnalisés afin de limiter le nombre de champs renvoyés par l'API productview/byIds pour les détails de SKU/composant/marchandisage.

Utilisation d'un profil de recherche personnalisé

Vous pouvez créer un profil personnalisé indépendant sans hériter des paramètres par défaut. La création d'un profil personnalisé autonome vous aidera à éditer les zones qui ne sont pas requises pour vos clients, telles que les zones de réponse, les fournisseurs ou les postprocesseurs. En limitant les zones que vous utilisez, vous pouvez réduire la charge d'attribut et améliorer l'efficacité. Par exemple, vous pouvez créer le profil suivant (le paramètre parentProfileName n'est pas une zone obligatoire et peut être laissé vide) :
{ "parentProfileName" : "", "profileName" : "X_findCatalogEntrySKUs", "indexName" : "product", "query" : { "params" : [ {"maxRows" : "1200"} ], "queryFields" : ["relationship.product.id"], "provider" : [ "com.hcl.commerce.search.internal.expression.provider.SearchInventoryExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByPublishedEntryOnlyExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByStorePathExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByCatalogExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchByLanguageExpressionProvider", "com.hcl.commerce.search.internal.expression.provider.SearchProductEntitlementExpressionProvider"], "preprocessor" : [], "postprocessor" : [ "com.hcl.commerce.search.internal.expression.postprocessor.SearchMainCatalogEntryViewResultQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewPriceQueryPostprocessor", "com.hcl.commerce.search.internal.expression.postprocessor.SearchCatalogEntryViewUserDataQueryPostprocessor" ], "responseFields" : [ "id.catentry","id.store","buyable","id.catalog","identifier.sku.raw","name.raw","name.override.raw", "description.raw","description.override.raw","url.thumbnail","url.override.thumbnail", "url.image","url.override.image","keyword.text", "manufacturer.raw","type","prices.","path.","relationship.product.id", "relationship.item.id","attribute.source","url.seo","attachments.", "images." ] } }
Note: Vous devez redémarrer vos conteneurs de service Query après avoir ajouté ou mis à jour un profil de recherche personnalisé.

Vous pouvez également remplacer les profils par défaut en créant un profil personnalisé à l'aide du même nom qu'un profil par défaut. Si un profil personnalisé avec le même nom qu'un profil par défaut est disponible, le profil personnalisé est utilisé et le profil par défaut est ignoré.