HCL Commerce Version 9.1.8.0 or later

Zones de stock et personnalisées dans un profil de recherche personnalisé

Vous pouvez ajouter des zones personnalisées dans le profil de recherche en éditant votre configuration ZooKeeper.

Before you begin

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. Le nœud final du profil est :
https://data_environment_hostname:30921/search/resources/api/v2/documents/profiles/profileName
Aucun conteneur ne doit être redémarré après l'ajout d'un profil à l'aide de ce nœud final.
Assurez-vous d'avoir mappé le nom de zone dans le nœud de composant ZooKeeper, comme dans l'exemple suivant. Pour comprendre comment les profils de recherche sont gérés dans ZooKeeper, voir Configuration des services Query dans ZooKeeper. Pour en savoir plus sur les profils de recherche, voir Rechercher dans les profils.
{
    "valuemappingservice": {
        "valuemapping": [
            {
                "internalName": "CatalogEntryUserDataFieldNameMapping",
                "externalName": "CatalogEntryUserDataFieldNameMapping",
                "valuemap": [
                    {
                        "externalValue": "inventories.*.quantity",
                        "internalValue": "inventories.*.quantity"
                    },
     {
                        "externalValue": "workspace",
                        "internalValue": "workspaceName"
                    }
                ]
            }
        ]
    }
}
Pour les zones de stock, recherchez des paramètres en fonction du modèle inventories.*.quantity. Cette recherche renvoie tous les articles de stock numérotés ; par exemple, inventories.10501.quantity.

Procedure

  1. Procédez comme suit pour ajouter des recherches de termes.
    1. i) Créez un profil personnalisé.
      Pour rechercher tous les articles de stock trouvés à l'aide du caractère générique *, effectuez une recherche sur le terme central. Ensuite, dans Profil personnalisé, ajoutez la zone de réponse inventories.*.quantity.
      {
      	"parentProfileName": "HCL_findProductsBySearchTerm",
      	"profileName": "X_findProductsBySearchTerm",
      	"lookupProfileName": "X_findCatalogEntryById",
      	"query": {
      		"responseFields": [
      			"inventories.*.quantity",
      			“workspaceName”
      		]
      	}
      }
      
      Si vous souhaitez trouver un article de stock spécifique, ajoutez une zone de réponse dans Profil personnalisé qui spécifie le numéro de stock. Par exemple, inventories.10501.quantity.
       {
      		"parentProfileName": "HCL_findProductsBySearchTerm",
      		"profileName": "X_findProductsBySearchTerm",
      "lookupProfileName" : "X_findCatalogEntryById",
      		"query": {
      			"responseFields": [
      				"inventories.10501.quantity",
      				“workspaceName”
      			]
      		}
                  		}
      
    2. Créez un profil de recherche.
      {
      			"parentProfileName": "HCL_findCatalogEntryById",
      			"profileName": "X_findCatalogEntryById",
      			"query": {
      				"responseFields": [
      					"inventories.10501.quantity"
      				]
      			}
      }
      
      Note: Si la fonction d'image du produit Hero est activée, créez le profil de recherche personnalisé avec toutes les modifications ajoutées dans X_findProductsBySearchTerm. HCL_findCatalogEntryById est le profil interne HCL utilisé pour la recherche. Ce profil ne peut pas être remplacé en tant que profil personnalisé. Vous ne pouvez créer le profil d'extension qu'à partir du profil HCL_findCatalogEntryById. Si l'image du produit Hero est désactivée, le profil de recherche n'est pas utilisé.
  2. 2) Pour la navigation dans les catégories
    1. Créez un profil personnalisé.
      Pour rechercher tous les articles de stock en fonction de leur terme central, ajoutez la zone de réponse inventories.*.quantity dans Profil personnalisé.
      {
      		"parentProfileName": "HCL_findProductsByCategory",
      		"profileName": "X_findProductsByCategory",
      		"lookupProfileName": "X_findCatalogEntryByIdForBrowse",
      		"query": {
      			"responseFields": [
      				"inventories.*.quantity",
      				"workspaceName"
      			]
      		}
      }
      
      Si vous souhaitez trouver un article de stock spécifique, ajoutez une zone de réponse dans Profil personnalisé qui spécifie le numéro de stock. Par exemple, inventory.10501.quantity.
    2. Créez un profil de recherche.
      {
      			"parentProfileName": "HCL_findCatalogEntryByIdForBrowse",
      			"profileName": "X_findCatalogEntryByIdForBrowse",
      			"query": {
      				"responseFields": [
      					"inventories.*.quantity",
      					"workspaceName"
      				]
      			}
      }
      
      Note: Si la fonction d'image du produit Hero est activée, créez le profil de recherche personnalisé avec toutes les modifications ajoutées dans X_findProductsByCategory. HCL_findCatalogEntryByIdForBrowse est le profil interne HCL utilisé pour la recherche. Ce profil ne peut pas être remplacé en tant que profil personnalisé. L'utilisateur ne peut créer le profil d'extension qu'à partir du profil HCL_findCatalogEntryByIdForBrowse. Si l'image du produit Hero est désactivée, le profil de recherche n'est pas utilisé.

Formatage des zones avec des noms qui se terminent par *

Pour formater les zones qui se terminent par * dans le service de mappage de valeurs dans JSON, définissez formatUserData sur la valeur true dans la section SearchConfiguration de mappages de valeurs. Par défaut, la valeur est true pour cet indicateur.

Example

Voici un exemple de profil.
{
	"parentProfileName": "HCL_findProductsBySearchTerm",
	"profileName": "X_findProductsBySearchTerm",
	"lookupProfileName": "X_findCatalogEntryById",
	"query": {
		"responseFields": [
			"test.list",
			"test1.list1",
			"category.10001-10001.*"
		]
	}
}

{
	"parentProfileName": "HCL_findCatalogEntryById",
	"profileName": "X_findCatalogEntryById",
	"query": {
		"responseFields": [
			"test.list",
			"test1.list1",
			"category.10001-10001.*"
		]
	}
}
Exemple de mappage pour les zones personnalisées :
	{
		"valuemappingservice": {
			"valuemapping": [
				{
					"internalName": "CatalogEntryUserDataFieldNameMapping",
					"externalName": "CatalogEntryUserDataFieldNameMapping",
					"valuemap": [
						{
							"externalValue": "List",
							"internalValue": "test.*"
						},
						{
							"externalValue": "List1",
							"internalValue": "test1.list1"
						},
						{
							"externalValue": "CategoryDetails",
							"internalValue": "category.*"
						}
					]
				}
			]
		}
}
Après l'exécution de l'API de recherche de termes, la section Données utilisateur avec des zones personnalisées est renvoyée dans la réponse.
"UserData": [
	{
		"List1": [
			"10",
			"20"
		],
		"CategoryDetails": [
			{
				"10001-10001": {
					"id": "10001",
					"name": "dresses",
					"sequence": "1.0"
				}
			}
		],
		"List": [
			{
				"list": "10"
			},
			{
				"list": "20"
			}
		]
	}
]

Pour List et List1, la structure de la réponse est différente, car il existe différents mappages dans la section de mappage de valeurs. Si le chemin d'accès complet à la zone est spécifié, une liste similaire à Liste1 sera renvoyée. Si le caractère générique * est utilisé dans le mappage de zone, il sera formaté en tant qu'objet JSON similaire à l'exemple d'objet Liste.

Note: Ne remplacez pas les profils suivants. Ils ne sont utilisés qu'en interne par HCL.
  • HCL_findCatalogEntryByIdForBrowse
  • HCL_findCatalogEntryById