Cette page décrit le filtrage des résultats pour les recommandations à l'aide de attributs de produit.
Vous pouvez filtrer les résultats de prédiction en spécifiant une expression de filtre dans "predict" requêtes. L'expression de filtre est une expression logique évaluée chaque produit. La liste des produits affichée dans la réponse est réduite aux produits où l'expression renvoie la valeur true.
Il existe deux versions de filtrage des recommandations:
Les sections de ce guide d'utilisation d'utilisation ne s'appliquent qu'à la version 2 du filtrage, filtre les recommandations à l'aide des attributs de produit.
Filtrage des recommandations, version 2
La version 2 utilise les attributs de produit. Filtrer les expressions
sont basés sur les attributs des produits. Il peut s'agir d'attributs système prédéfinis,
tels que categories
et colors
, ou des attributs personnalisés que vous définissez, tels que
attributes.styles
Lorsque vous définissez un attribut de produit comme filtrable,
les recommandations peuvent ensuite utiliser automatiquement ces attributs
pour le filtrage des recommandations, ce qui vous évite d'avoir à le faire manuellement
ajouter des tags de filtre.
Lorsque vous utilisez des attributs pour filtrer des produits, la réponse de prédiction renvoie les produits principaux qui contiennent au moins un produit principal ou une variante de produit dont la valeur d'attribut correspond au filtre . Pour en savoir plus sur les produits principaux et les variantes de produits, consultez Niveaux de produits.
L'exemple d'expression de filtre suivant filtre également tout rouge ou bleu produits définis sur "Nouveauté-Arrivée" et non défini comme promotionnel:
colors: ANY("red", "blue") AND attributes.status: ANY("New-Arrival") AND NOT attributes.is_promotional: ANY("true")
Pour utiliser la version 2 du filtrage pour les recommandations : procédures. Chaque procédure est présentée plus loin sur cette page.
- Activez le filtrage des recommandations pour un modèle qui des recommandations filtrées.
- Activer le filtrage des recommandations pour les attributs de produit que vous prévoyez de filtrer.
- Utilisez des attributs de produit filtrables dans les requêtes de prédiction.
Filtrage des recommandations, version 1 (obsolète)
La version 1 utilise des tags de filtre créés manuellement. Les expressions de filtre sont basées aux tags de filtre, que vous devez ajouter manuellement aux produits de votre catalogue que vous prévoyez de filtrer.
L'exemple d'expression de filtre suivant utilise des balises de filtre pour spécifier des produits. avec le tag "Rouge" ou "Bleu", ainsi que la mention "Nouvel arrivée", et ne sont pas tagués comme "promotionnels":
tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")
Consultez la documentation de référence de l'API pour le champ Product.tags[]
.
Les expressions de tag peuvent contenir les opérateurs booléens OR
ou NOT
, qui doivent être séparés des valeurs de tag par un ou plusieurs espaces. Les valeurs de tag peuvent également être immédiatement précédées d'un tiret (-
), ce qui équivaut à l'opérateur NOT
. Les expressions de tag qui utilisent les opérateurs booléens doivent être placées entre parenthèses.
En plus des tags, vous pouvez filtrer par filterOutOfStockItems
.
L'indicateur filterOutOfStockItems
filtre tous les produits ayant une stockState
sur OUT_OF_STOCK
.
Vous pouvez combiner des filtres de tags et des filtres d'articles non disponibles afin que seuls les articles qui s'appliquent à toutes les expressions de filtre spécifiées sont renvoyées.
Voici quelques exemples de chaînes de filtre :
"filter": "tag=\"spring-sale\""
"filter": "filterOutOfStockItems"
"filter": "tag=\"spring-sale\" tag=\"exclusive\" filterOutOfStockItems"
L'exemple suivant renvoie uniquement les articles en stock dont le
la balise spring-sale
ou exclusive
(ou les deux) et ne comporte pas non plus la balise
Balise items-to-exclude
.
"filter": "tag=(\"spring-sale\" OR \"exclusive\") tag=(-\"items-to-exclude\") filterOutOfStockItems"
Compatibilité des filtres d'attributs et des filtres de tag
Si un modèle comporte à la fois des tags créés manuellement et des attributs de produit filtrables, il peut diffuser des requêtes de prédiction à l'aide de l'une ou l'autre version de filtrage. Cependant, il n'est pas il est possible d'inclure des expressions de filtrage v1 et v2 dans le même requête de prédiction.
Limites de filtrage des recommandations
Chaque attribut filtrable consomme de la mémoire dans chacun de vos modèles. La Les limites suivantes permettent d'éviter des effets négatifs sur les performances de diffusion:
- Vous pouvez définir jusqu'à 10 attributs personnalisés comme filtrables dans votre catalogue.
Votre catalogue peut contenir jusqu'à 100 000 000 de valeurs d'attributs filtrables.
Le nombre total de valeurs d'attributs dans votre catalogue peut être estimé en multipliant le nombre de produits de votre catalogue par le nombre .
Par exemple, si votre catalogue contient 1 000 produits et 3 attributs définis comme filtrables, le nombre total de valeurs d'attribut peut être estimé comme suit : 3*1000=3000.
Si vous utilisez le filtrage des recommandations de la version 1 en même temps que la version 2, sont comptabilisées dans votre quota. Assurez-vous que le nombre balises de filtre ajoutées au nombre total de valeurs d'attribut est inférieur à 100 000 000.
Si vous dépassez ces limites, vous ne pouvez pas définir d'autres attributs comme filtrables. Si vous devez dépasser ces limites, demander une augmentation de quota.
Le nombre total de tags est calculé pendant l'entraînement du modèle. Si le nombre total dépasse la limite, l'entraînement du modèle échoue. Si plus de 10 paramètres personnalisés sont trouvés lors de l'entraînement du modèle, seuls 10 sont utilisés.
Syntaxe de l'expression de filtre de recommandations
Les syntaxes d'expression de filtre pour la recherche et recommandations sont similaires. Toutefois, les recommandations présentent plusieurs limites.
La syntaxe de l'expression de filtre de recommandations peut être résumée par le code EBNF suivant:
# A single expression or multiple expressions that are joined by "AND" or "OR". filter = expression, { " AND " | "OR", expression }; # An expression can be prefixed with "-" or "NOT" to express a negation. expression = [ "-" | "NOT " ], # A parenthesized expression | "(", expression, ")" # A simple expression applying to a textual field. # Function "ANY" returns true if the field contains any of the literals. ( textual_field, ":", "ANY", "(", literal, { ",", literal }, ")" # A literal is any double-quoted case sensitive string. You must escape backslash (\) and # quote (") characters. We do not support textual values containing `/` characters, or partial string matches. # The literal must be an exact match for products in the catalog. The Predict # API returns empty results when no possible matches exist. literal = double-quoted string; textual_field = see the tables below;
Restrictions de syntaxe des filtres
Les restrictions suivantes s'appliquent :
- La profondeur des opérateurs
AND
etOR
entre parenthèses est limitée. La les expressions logiques du filtre doivent se trouver forme normale conjonctive (CNF). Le plus complexe l'expression logique prise en charge peut être une liste de clauses connectées parAND
qui ne contiennent que des opérateursOR
, tels que:(... OR ... OR ...) AND (... OR ...) AND (... OR ...)
- Les expressions peuvent être inversées à l'aide du mot clé
NOT
ou de-
. Cela ne fonctionne avec des expressionsANY()
comportant un seul argument qui n'inclut pas d'attributs d'inventaire. - Les restrictions basées sur
availability
doivent être définies au niveau le plus élevé. Elles ne peuvent pas être utilisé dans une clauseOR
ou une négation (NOT
). - Étant donné que le filtrage standard des recommandations n'accepte que les champs textuels, Les opérations "inférieur à", "supérieur à" et de vérification de la plage ne sont pas prises en charge pour le filtrage standard des recommandations. Les opérations "inférieur à" et "supérieur à" peuvent être utilisée uniquement avec les conditions de contrôle de redressement/rétrogradation des recommandations, qui acceptent certains champs numériques (voir la section Champs compatibles avec le boosting/rétrogradation).
- Le nombre maximal de termes dans la clause
AND
de premier niveau est de 20. - Une clause
OR
peut comporter jusqu'à 100 arguments inclus dansANY()
. . Si une clauseOR
comporte plusieurs expressionsANY()
, leurs arguments sont tous comptabilisés dans cette limite. Par exemple,colors: ANY("red", "green") OR colors: ANY("blue")
comporte trois arguments.
Le tableau suivant présente des exemples d'expressions de filtre valides, ainsi que des expressions de filtre non valides exemples et les raisons pour lesquelles ils ne sont pas valides.
Expression | Valide | Remarques |
---|---|---|
colors: ANY("red", "green") |
Oui | |
NOT colors: ANY("red") |
Oui | |
NOT colors: ANY("red", green") |
Non | Annule une fonction `ANY()` contenant plusieurs arguments. |
colors: ANY("red", "green") OR |
Oui | |
(colors: ANY("red") OR colors: ANY("green")) AND |
Oui | |
(colors: ANY("red") AND colors: ANY("green")) OR |
Non | Pas en forme normale conjonctive. |
(colors: ANY("red")) AND (availability: ANY("IN_STOCK") |
Oui | |
(colors: ANY("red")) OR (availability: ANY("IN_STOCK")) |
Non | Combine availability dans une expression OR avec d'autres conditions. |
Filtrage des attributs liés à l'inventaire
Le filtrage des attributs liés à l'inventaire est basé sur l'état en temps réel des
vos produits. Pour le filtrage availability: ANY("IN_STOCK")
, la réponse de prédiction
renvoie les produits principaux dont la valeur correspondante du produit principal ou d'une variante est IN_STOCK
. Pour en savoir plus sur les produits principaux et les variantes de produits, consultez
Niveaux de produits. Nous ne prenons pas en charge les filtres Primary only
ou Variant only
.
IN_STOCK
est la seule valeur d'attribut availability
compatible avec la version 2 de
le filtrage des recommandations.
Les attributs d'inventaire peuvent être utilisés dans les clauses AND
, mais pas dans
Clauses OR
.
Champs pris en charge
Les champs textuels compatibles sont résumés dans le tableau suivant.
Le boosting/rétrogradation des recommandations prend en charge des champs supplémentaires ne sont pas compatibles avec le filtrage standard des recommandations. Pour obtenir une liste champs supplémentaires pris en charge par le boosting/rétrogradation pour recommandations, consultez Champs compatibles avec le boosting/rétrogradation.
champ | description |
---|---|
"productId" | Identifiant du produit (dernier segment de Product.name). |
"chaînes" | Champ Product.brands. |
"categories" | Champ Product.categories. |
"genders" | Champ Audience.genders. |
"ageGroups" | Champ Audience.age_groups. |
"colorFamilies" | Champ ColorInfo.color_families. |
"colors" | Champ ColorInfo.colors. |
"sizes" | Champ Product.sizes. |
"materials" | Champ Product.materials. |
"patterns" | Champ Product.patterns. |
"conditions" | Champ Product.conditions. |
"attributes.key" | Attribut de texte personnalisé dans l'objet Product. La clé peut être n'importe quelle clé du champ Product.attributes si les valeurs des attributs sont textuelles. |
Champs compatibles avec le boosting/rétrogradation
Le boosting/rétrogradation accepte des champs supplémentaires qui ne sont pas compatibles avec les le filtrage des recommandations, y compris les champs numériques.
En plus des champs répertoriés sur la page Champs acceptés, Boost/bury for Recommendations accepte les champs suivants:
Champs textuels
champ | description |
---|---|
"balises" |
Product.tags[] Les balises personnalisées associées au
produit. |
Champs numériques
champ | description |
---|---|
"price" | PriceInfo.price Prix du produit. |
"discount" |
Remise sur le produit. Ce champ est calculé à partir du prix d'origine
et les valeurs du champ de prix de PriceInfo .
|
"rating" |
Product.rating Le nombre total de notes pour
produit.
|
"ratingCount" |
rating.ratingCount Le nombre total de notes pour
produit.
|
Définir le filtrage des recommandations pour un modèle
Vous pouvez activer le filtrage des recommandations à l'aide des
Recherchez la console Retail ou la ressource d'API Models
.
Depuis la console, vous pouvez créer un modèle comportant un filtrage des recommandations. est activé. Vous pouvez également mettre à jour cette option pour les modèles existants.
La ressource d'API Models
vous permet de créer un modèle avec des recommandations.
ou mettez à jour ce paramètre pour un modèle existant en utilisant
models.Patch
Notez que si la configuration de diffusion qui renvoie des prédictions comporte Correspondance de catégorie activée, le filtrage ne fonctionne pas les "catégories" car la réponse ne renvoie que des résultats de produits qui partagent une catégorie avec le produit contextuel.
Définir le filtrage d'un modèle à l'aide de la console
Dans la console Search for Retail, sélectionnez l'option Générer automatiquement des tags. lors de la création du modèle afin de lui permettre de filtrer les recommandations.
Vérifiez la compatibilité avec d'autres paramètres tels que diversity-level
, category-match-level
, etc., car tous les effets se combinent et le filtrage s'effectue en dernier.
- Par exemple, la combinaison de
diversity-level
etcategory attribute filtering
basée sur des règles génère souvent une sortie vide.diversity-level=high-diversity
force le modèle à limiter le nombre maximal de résultats pour les mêmes chaînes de catégorie. (un résultat pour catégorie1, un résultat pour catégorie2, etc.).- Le filtrage des attributs à l'aide des métadonnées de catégorie (
Product.categories = ANY ("category2")
) entraîne la suppression des éléments qui ne correspondent pas. - La sortie finale a moins de trois résultats.
- Pour le modèle
similar-items
, il contient déjà une amélioration supplémentaire de la pertinence de la catégorie avec lacategory-match-level = relaxed-category-match
par défaut. Passez àcategory-match-level=no-category-match
pour désactiver le comportement et utiliser des règles de filtrage personnalisées.
Consultez l'article Créer des modèles de recommandation pour savoir comment créer un à l'aide de la console.
Ce paramètre ne peut pas être modifié dans la console pour les modèles existants. Pour mettre à jour
d'un modèle, utilisez la méthode API models.Patch
.
Définir le filtrage d'un modèle à l'aide de l'API
Vous pouvez activer le filtrage des recommandations pour un modèle à l'aide de
models.Create
lorsque vous créez un modèle ou
models.Patch
lors de la mise à jour d'un modèle existant.
Pour autoriser le filtrage, définissez le champ filteringOption
pour votre modèle. Ce champ est
Les valeurs autorisées sont les suivantes:
RECOMMENDATIONS_FILTERING_DISABLED
(par défaut): le filtrage est désactivé pour le modèle.RECOMMENDATIONS_FILTERING_ENABLED
: le filtrage est activé pour le compte principal produits.
L'exemple curl suivant crée un modèle contenant des recommandations et le filtrage activé.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_NUMBER" \ --data "{ 'name': 'MODEL_NAME', 'displayName': 'MODEL_DISPLAY_NAME', 'type': 'home-page', 'filteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED', }" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/models"
L'exemple curl suivant met à jour le paramètre d'option de filtrage pour une règle model.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_NUMBER" \ --data "{ 'filteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED', }" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/models/MODEL_ID?updateMask=filteringOption"
Définir les attributs comme filtrables
Pour filtrer les produits recommandés, activez le filtrage par attributs de produit
que vous utiliserez dans les expressions de filtre. Vous pouvez modifier ce paramètre à l'aide des
Recherchez la console Retail ou utilisez la ressource d'API Attributes
.
Ne rendez pas plus d'attributs filtrables que nécessaire. Le champ d'application Nombre d'attributs filtrables.
Définir les attributs comme filtrables à l'aide de la console
Vous pouvez définir un attribut comme filtrable la page Paramètres de la Recherchez la console Retail.
Accédez à la page Paramètres de la console Search for Retail.
Accéder à la page "Commandes"Accédez à l'onglet Contrôles d'attributs.
Cet onglet affiche un tableau de tous les attributs de produit pour lesquels vous pouvez définir des contrôles à l'échelle du site.
Cliquez sur editModifier les contrôles.
Définissez Filtrable sur Vrai pour l'attribut de produit.
Cliquez sur Enregistrer les contrôles.
Vous pourrez commencer à utiliser l'attribut pour le filtrage après le prochain entraînement de modèle est terminé.
Définir les attributs comme filtrables à l'aide de l'API
AttributesConfig
représente une liste d'attributs pour un catalogue.
Définissez le champ AttributesConfig.filteringOption
pour CatalogAttribute
. Ce
Les valeurs autorisées pour ce champ sont les suivantes:
RECOMMENDATIONS_FILTERING_DISABLED
(par défaut): le filtrage est désactivé pour l'attribut.RECOMMENDATIONS_FILTERING_ENABLED
: le filtrage est activé pour l'attribut.
L'exemple curl suivant interroge vos attributs de produit existants.
curl -X GET \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_NUMBER" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/attributesConfig"
L'exemple curl suivant définit l'attribut de produit categories
comme suit :
et filtrables.
Lors de la mise à jour d'un attribut existant, conservez les valeurs d'origine de l'attribut pour
indexableOption
, dynamicFacetableOption
et searchableOption
,
à l'étape précédente. Si l'attribut que vous avez choisi n'apparaît pas
afficher attributesConfig
comme dans l'exemple précédent, utilisez la valeur par défaut
comme indiqué dans l'exemple suivant.
curl -X PATCH \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_NUMBER" \ --data "{ 'name': 'projects/PROJECT_NUMBER/locations/global/catalogs/default_catalog/attributesConfig', 'catalogAttributes': { 'categories': { 'key': 'categories', 'indexableOption': 'INDEXABLE_ENABLED', 'dynamicFacetableOption': 'DYNAMIC_FACETABLE_DISABLED', 'searchableOption': 'SEARCHABLE_DISABLED', 'recommendationsFilteringOption': 'RECOMMENDATIONS_FILTERING_ENABLED' } }, 'attributeConfigLevel': 'CATALOG_LEVEL_ATTRIBUTE_CONFIG' }" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/attributesConfig"
Vous pourrez commencer à utiliser l'attribut pour le filtrage après le prochain entraînement de modèle est terminé. En général, cette opération prend au moins huit heures.
Utiliser des attributs filtrables dans une requête de prédiction
Après avoir réentraîné votre modèle, vous pouvez utiliser des attributs de produit filtrables dans vos requêtes de prédiction.
Définissez la valeur du paramètre de requête filterSyntaxV2
sur "true" pour activer la version 2.
le filtrage des recommandations. Si le paramètre n'est pas défini, filtrage version 1
reste actif. Si un modèle comporte à la fois des tags créés manuellement et un produit filtrable
, il peut diffuser des requêtes de prédiction en utilisant l'une ou l'autre version du filtrage.
Toutefois, il n'est pas possible d'inclure à la fois le filtrage v1 et le filtrage v2.
dans la même requête de prédiction.
L'exemple curl partiel suivant montre filterSyntaxV2
défini sur "true" et
à l'aide des attributs de produit colors
et categories
. Ce
l'exemple suppose que colors
et categories
sont définis comme filtrables.
"params": { "filterSyntaxV2": true }, "filter": "(categories: ANY(\"Phone > Android > Pixel\") OR colors: ANY(\"red\", \"green\")) AND (availability: ANY(\"IN_STOCK\"))"
L'exemple curl suivant montre une requête de prédiction complète.
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ -H "X-Goog-User-Project: PROJECT_NUMBER" \ --data "{ 'userEvent': { 'eventType': 'detail-page-view', 'visitorId': 'VISITOR_ID', 'productDetails': { 'product': { 'id': 'PRODUCT_ID' } } }, 'params': { 'returnProduct': true, 'filterSyntaxV2': true, 'strictFiltering': true, }, 'filter': 'categories: ANY(\"xyz\")' }" \ "https://retail.googleapis.com/v2/projects/PROJECT_ID/locations/global/catalogs/default_catalog/placements/SERVING_CONFIG:predict"
En plus des filtres, les paramètres paramètre de diversification peut également affecter le nombre les résultats renvoyés par la réponse.