Auf dieser Seite wird beschrieben, wie Sie Ergebnisse für Empfehlungen mithilfe von Produktattributen filtern.
Sie können Vorhersageergebnisse filtern, indem Sie in Vorhersageanfragen einen Filterausdruck angeben. Der Filterausdruck ist ein logischer Ausdruck, der für jedes Produkt ausgewertet wird. Die Liste der Produkte in der Antwort wird auf Produkte eingegrenzt, bei denen der Ausdruck als wahr ausgewertet wird.
Es gibt zwei Versionen zum Filtern von Empfehlungen:
Die Abschnitte in dieser Anleitung gelten nur für die Filterversion 2, in der Empfehlungen anhand von Produktattributen gefiltert werden.
Empfehlungen filtern, Version 2
In Version 2 werden Produktattribute verwendet. Filterausdrücke basieren auf Produktattributen. Dabei kann es sich um vordefinierte Systemattribute wie categories
und colors
oder um von Ihnen definierte benutzerdefinierte Attribute wie attributes.styles
handeln. Wenn Sie ein Produktattribut als filterbar festlegen, können Empfehlungen diese Attribute automatisch als Tags zum Filtern von Empfehlungen verwenden, anstatt Filter-Tags manuell hinzufügen zu müssen.
Wenn Sie Attribute zum Filtern von Produkten verwenden, gibt die Vorhersageantwort Hauptprodukte zurück, die mindestens ein Haupt- oder Variantenprodukt mit einem Attributwert enthalten, der dem Filterausdruck entspricht. Weitere Informationen zu Primärprodukten und Produktvarianten findest du unter Produktebenen.
Mit dem folgenden Beispiel für einen Filterausdruck wird auch nach allen roten oder blauen Produkten gefiltert, die als „New-Arrival“ (Neu-Ankunft) und nicht als „Eigenwerbung“ festgelegt sind:
colors: ANY("red", "blue") AND attributes.status: ANY("New-Arrival") AND NOT attributes.is_promotional: ANY("true")
So verwenden Sie Version 2 der Filterung für Empfehlungen: Die einzelnen Verfahren werden weiter unten auf dieser Seite beschrieben.
- Aktivieren Sie das Filtern von Empfehlungen für ein Modell, das gefilterte Empfehlungen bereitstellt.
- Aktivieren Sie das Filtern von Empfehlungen nach Produktattributen, nach denen Sie filtern möchten.
- Filterbare Produktattribute in Vorhersageanfragen verwenden
Filtern von Empfehlungen, Version 1 (eingestellt)
In Version 1 werden manuell erstellte Filter-Tags verwendet. Filterausdrücke basieren auf Filter-Tags, die Sie allen zu filternden Produkten in Ihrem Katalog manuell hinzufügen müssen.
Im folgenden Beispiel für einen Filterausdruck werden Filter-Tags verwendet, um Produkte anzugeben, die als „Rot“ oder „Blau“ gekennzeichnet sind, sowie das Tag „Neu-Ankunft“, die nicht als „Eigenwerbung“ gekennzeichnet sind:
tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")
Weitere Informationen finden Sie in der API-Referenzdokumentation zum Feld Product.tags[]
.
Tag-Ausdrücke können die booleschen Operatoren OR
oder NOT
enthalten. Diese müssen von den Tag-Werten durch ein oder mehrere Leerzeichen getrennt sein. Den Tag-Werten können auch Bindestriche (-
) vorangestellt werden. Dies entspricht dem Operator NOT
. Tag-Ausdrücke, die boolesche Operatoren verwenden, müssen in Klammern stehen.
Neben Tags können Sie auch nach filterOutOfStockItems
filtern.
Das Flag filterOutOfStockItems
filtert alle Produkte heraus, bei denen für stockState
der Wert OUT_OF_STOCK
angegeben ist.
Sie können Tag-Filter und Filter, die nicht auf Lager sind, so kombinieren, dass nur Elemente zurückgegeben werden, die allen angegebenen Filterausdrücken entsprechen.
Beispiele für Filterstrings:
"filter": "tag=\"spring-sale\""
"filter": "filterOutOfStockItems"
"filter": "tag=\"spring-sale\" tag=\"exclusive\" filterOutOfStockItems"
Im folgenden Beispiel werden nur Artikel zurückgegeben, die auf Lager sind und entweder das Tag spring-sale
oder das Tag exclusive
(oder beides) haben, aber nicht das Tag items-to-exclude
.
"filter": "tag=(\"spring-sale\" OR \"exclusive\") tag=(-\"items-to-exclude\") filterOutOfStockItems"
Kompatibilität mit Attributfiltern und Tagfiltern
Wenn ein Modell sowohl manuell erstellte Tags als auch filterbare Produktattribute hat, kann es Vorhersageanfragen mit beiden Filterversionen bereitstellen. Es ist jedoch nicht möglich, V1-Filter- und V2-Filterausdrücke in derselben Vorhersageanfrage zu verwenden.
Einschränkungen für das Filtern von Empfehlungen
Jedes filterbare Attribut verbraucht in jedem Ihrer Modelle etwas Arbeitsspeicher. Die folgenden Limits sollen negative Auswirkungen auf die Bereitstellungsleistung verhindern:
- Sie können in Ihrem Katalog bis zu zehn benutzerdefinierte Attribute als filterbar festlegen.
Ihr Katalog enthält bis zu 100.000.000 filterbare Attributwerte.
Die Gesamtzahl der Attributwerte in Ihrem Katalog kann geschätzt werden, indem die Anzahl der Produkte in Ihrem Katalog mit der Anzahl der filterbaren Attribute multipliziert wird.
Wenn Sie beispielsweise einen Katalog mit 1.000 Produkten und 3 Attributen haben, die als filterbar festgelegt sind, kann die Gesamtzahl der Attributwerte mit 3 × 1.000=3.000 geschätzt werden.
Wenn Sie Empfehlungen der Version 1 zusammen mit Version 2 verwenden, wird die Anzahl der Filter-Tags auf Ihr Kontingent angerechnet. Achten Sie darauf, dass die Anzahl der zur Gesamtzahl der Attributwerte hinzugefügten Filter-Tags weniger als 100.000.000 beträgt.
Wenn Sie die Limits überschreiten, können Sie keine weiteren Attribute als filterbar festlegen. Fordern Sie bei Bedarf eine Kontingenterhöhung an.
Die Gesamtzahl der Tags wird während des Modelltrainings berechnet. Wenn die Gesamtzahl das Limit überschreitet, schlägt das Modelltraining fehl. Wenn während des Modelltrainings mehr als 10 filterbare benutzerdefinierte Attribute gefunden werden, werden nur 10 verwendet.
Syntax für Empfehlungsfilterausdruck
Die Syntaxen der Filterausdrücke für die Suche und die Empfehlungen sind ähnlich. Die Empfehlungen unterliegen jedoch einigen Einschränkungen.
Die Syntax für Empfehlungsfilterausdrücke kann wie folgt zusammengefasst werden: EBNF:
# 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;
Syntaxeinschränkungen filtern
Folgende Einschränkungen gelten:
- Die Tiefe der Einbettung der Operatoren
AND
undOR
in Klammern ist begrenzt. Die logischen Ausdrücke im Filter müssen in der Konjunktionsnormalform (CNF) vorliegen. Der komplexeste unterstützte logische Ausdruck kann eine mitAND
verbundene Liste von Klauseln sein, die nurOR
-Operatoren enthält. Beispiel:(... OR ... OR ...) AND (... OR ...) AND (... OR ...)
- Ausdrücke können mit dem Schlüsselwort
NOT
oder mit-
negiert werden. Dies funktioniert nur mitANY()
-Ausdrücken mit einem einzelnen Argument, das keine inventarbezogenen Attribute enthält. availability
-basierte Einschränkungen müssen sich auf der obersten Ebene befinden. Sie können nicht als Teil einerOR
-Klausel oder einer Negation (NOT
) verwendet werden.- Da das Filtern von Empfehlungen beim Standardfilter nur Textfelder unterstützt, werden Kleiner-als-, Größer-als- und Bereichsüberprüfungsvorgänge nicht für das Filtern von Standardempfehlungen unterstützt. Kleiner-als- und Größer-als-Vorgänge können nur mit Boost-/Herunter-Steuerbedingungen für Empfehlungen verwendet werden, die einige numerische Felder unterstützen (siehe Boost-/bury-unterstützte Felder).
- Die maximale Anzahl von Begriffen in der übergeordneten
AND
-Klausel beträgt 20. - Eine
OR
-Klausel kann bis zu 100 Argumente haben, die inANY()
-Ausdrücken enthalten sind. Wenn eineOR
-Klausel mehrereANY()
-Ausdrücke hat, werden alle ihre Argumente auf dieses Limit angerechnet. Beispiel:colors: ANY("red", "green") OR colors: ANY("blue")
hat drei Argumente.
Die folgende Tabelle enthält gültige Beispiele für Filterausdrücke sowie ungültige Beispiele und die Gründe für ihre Ungültigkeit.
Ausdruck | Gültig | Notes |
---|---|---|
colors: ANY("red", "green") |
Ja | |
NOT colors: ANY("red") |
Ja | |
NOT colors: ANY("red", green") |
Nein | Negiert „ANY()“ mit mehr als einem Argument. |
colors: ANY("red", "green") OR |
Ja | |
(colors: ANY("red") OR colors: ANY("green")) AND |
Ja | |
(colors: ANY("red") AND colors: ANY("green")) OR |
Nein | Nicht in konjunktiver Normalform. |
(colors: ANY("red")) AND (availability: ANY("IN_STOCK") |
Ja | |
(colors: ANY("red")) OR (availability: ANY("IN_STOCK")) |
Nein | Kombiniert availability in einem OR -Ausdruck mit anderen Bedingungen. |
Inventarbezogene Attributfilterung
Das Filtern nach inventarbezogenen Attributen basiert auf dem Echtzeitstatus Ihrer Produkte. Beim Filtern nach availability: ANY("IN_STOCK")
gibt die Vorhersageantwort Hauptprodukte zurück, bei denen das Hauptprodukt oder ein Variantenprodukt den übereinstimmenden Wert IN_STOCK
hat. Weitere Informationen zu Primärprodukten und Produktvarianten findest du unter Produktebenen. Die Filterung nach Primary only
oder Variant only
wird nicht unterstützt.
IN_STOCK
ist der einzige availability
-Attributwert, der von Version 2 der Empfehlungsfilterung unterstützt wird.
Inventarbezogene Attribute können in AND
-Klauseln verwendet werden, aber nicht in OR
-Klauseln.
Unterstützte Felder
Die unterstützten Textfelder sind in der folgenden Tabelle zusammengefasst.
Das Hoch-/Herunterstufen von Empfehlungen unterstützt zusätzliche Felder, die von der standardmäßigen Empfehlungsfilterung nicht unterstützt werden. Eine Liste der zusätzlichen Felder, die von Boost/bury für Empfehlungen unterstützt werden, finden Sie unter Hoch-/Herunterstützen-Felder.
Feld | Beschreibung |
---|---|
„productId“ | Die Produkt-ID (das letzte Segment von Product.name). |
"brands" | Die Product.brands. |
„categories“ | Die Product.categories. |
„genders“ | Die Audience.genders. |
„ageGroups“ | Die Audience.age_groups. |
"colorFamilies" | Die ColorInfo.color_families. |
„colors“ | Die ColorInfo.colors. |
„sizes“ | Die Product.sizes. |
„materials“ | Die Product.materials. |
„patterns“ | Die Product.patterns. |
"conditions" | Die Product.conditions. |
"attributes.key" | Das benutzerdefinierte Textattribut im Produktobjekt. Ein Schlüssel kann ein beliebiger Schlüssel in der Zuordnung Product.attributes sein, wenn die Attributwerte in Textform vorliegen. |
Hoch-/Herabstufungs unterstützte Felder
Die Hoch-/Herabstufung unterstützt einige zusätzliche Felder, einschließlich numerischer Felder, die von der standardmäßigen Empfehlungsfilterung nicht unterstützt werden.
Zusätzlich zu den unter Unterstützte Felder aufgeführten Felder werden bei Boosting/bury-Empfehlungen für Empfehlungen die folgenden Felder unterstützt:
Textfelder
Feld | description |
---|---|
"Tags" |
Product.tags[] . Benutzerdefinierte Tags, die mit dem Produkt verknüpft sind. |
Numerische Felder
Feld | Beschreibung |
---|---|
"price" | PriceInfo.price : Der Preis des Produkts. |
"discount" |
Der Produktrabatt. Dieses Feld wird anhand der ursprünglichen Preis- und Preisfeldwerte aus PriceInfo berechnet.
|
„rating“ |
Product.rating . Die Gesamtzahl der Bewertungen für das Produkt.
|
„ratingCount“ |
rating.ratingCount . Die Gesamtzahl der Bewertungen für das Produkt.
|
Filtern von Empfehlungen für ein Modell festlegen
Sie können das Filtern nach Empfehlungen mit der Search for Retail-Konsole oder der API-Ressource Models
aktivieren.
Über die Console können Sie ein neues Modell erstellen, für das das Filtern von Empfehlungen aktiviert ist. Sie können diese Option auch für vorhandene Modelle aktualisieren.
Mit der API-Ressource Models
können Sie ein neues Modell mit aktiviertem Empfehlungsfilter erstellen oder diese Einstellung für ein vorhandenes Modell mit models.Patch
aktualisieren.
Wenn für die Bereitstellungskonfiguration, die Vorhersagen zurückgibt, der Kategorieabgleich aktiviert ist, funktioniert das Filtern mit dem Attribut „categories“ nicht, da die Antwort nur Produktergebnisse zurückgibt, die dieselbe Kategorie wie das Kontextprodukt haben.
Filter für ein Modell über die Console festlegen
Wählen Sie in der Search for Retail-Konsole beim Erstellen des Modells die Option Tags automatisch generieren aus, um das Filtern von Empfehlungen für dieses Modell zuzulassen.
Überprüfe die Kompatibilität mit anderen Einstellungen wie diversity-level
und category-match-level
, da die Gesamteffekte zusammengerechnet und die Filterung zuletzt angewendet wird.
- Beispielsweise führt die Kombination der regelbasierten
diversity-level
undcategory attribute filtering
häufig zu einer leeren Ausgabe.diversity-level=high-diversity
zwingt das Modell, die maximalen Ergebnisse für dieselben Kategoriestrings zu begrenzen. Beispielsweise 1 Ergebnis für Kategorie 1, 1 Ergebnis für Kategorie 2 usw.- Beim Attributfilterung mithilfe von Kategoriemetadaten (
Product.categories = ANY ("category2")
) verwirft das Modell nicht übereinstimmende Elemente. - Die Endausgabe hat weniger als drei Ergebnisse.
- Für das Modell
similar-items
enthält es bereits eine zusätzliche Kategorierelevanzerhöhung mit dem Standardwertcategory-match-level = relaxed-category-match
. Wechseln Sie zucategory-match-level=no-category-match
, um das Verhalten zu deaktivieren und benutzerdefinierte Filterregeln zu verwenden.
Eine Anleitung zum Erstellen eines Empfehlungsmodells über die Console finden Sie unter Empfehlungsmodelle erstellen.
Diese Einstellung kann in der Console für vorhandene Modelle nicht aktualisiert werden. Verwenden Sie die API-Methode models.Patch
, um diese Einstellung für ein Modell zu aktualisieren.
Filter für ein Modell mithilfe der API festlegen
Sie können das Filtern von Empfehlungen für ein Modell mit models.Create
beim Erstellen eines neuen Modells oder mit models.Patch
beim Aktualisieren eines vorhandenen Modells aktivieren.
Legen Sie das Feld filteringOption
für Ihr Modell fest, um das Filtern zuzulassen. Die folgenden Werte sind für dieses Feld zulässig:
RECOMMENDATIONS_FILTERING_DISABLED
(Standard): Die Filterung ist für das Modell deaktiviert.RECOMMENDATIONS_FILTERING_ENABLED
: Filter ist für Hauptprodukte aktiviert.
Im folgenden curl-Beispiel wird ein neues Modell erstellt, bei dem die Filterung von Empfehlungen aktiviert ist.
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"
Im folgenden curl-Beispiel wird die Einstellung der Filteroptionen für ein vorhandenes Modell aktualisiert.
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"
Attribute als filterbar festlegen
Zum Filtern empfohlener Produkte aktivieren Sie die Filterung nach den Produktattributen, die Sie in Filterausdrücken verwenden. Sie können diese Einstellung über die Search for Retail-Konsole oder die API-Ressource Attributes
aktualisieren.
Legen Sie nicht mehr Attribute als erforderlich fest. Die Anzahl der filterbaren Attribute ist begrenzt.
Attribute über die Console als filterbar festlegen
Sie können ein Attribut in der Search for Retail-Konsole als filterbare Seite „Einstellungen“ festlegen.
Rufen Sie in der Search for Retail-Konsole die Seite Steuerelemente auf.
Zur Seite „Einstellungen“Wechseln Sie zum Tab Attributsteuerungen.
Auf diesem Tab wird eine Tabelle mit allen Produktattributen angezeigt, für die Sie websiteweite Steuerungen festlegen können.
Klicken Sie auf editSteuerelemente ändern.
Setzen Sie Filterable (Filterbar) für das Produktattribut auf True.
Klicken Sie auf Steuerelemente speichern.
Sie können das Attribut zum Filtern verwenden, nachdem der nächste Modelltrainingszyklus abgeschlossen ist.
Attribute mithilfe der API als filterbar festlegen
AttributesConfig
steht für eine Liste von Attributen für einen Katalog.
Legen Sie das Feld AttributesConfig.filteringOption
für CatalogAttribute
fest. Die zulässigen Werte für dieses Feld sind:
RECOMMENDATIONS_FILTERING_DISABLED
(Standard): Die Filterung ist für das Attribut deaktiviert.RECOMMENDATIONS_FILTERING_ENABLED
: Die Filterung ist für das Attribut aktiviert.
Im folgenden curl-Beispiel werden Ihre vorhandenen Produktattribute abgefragt.
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"
Im folgenden curl-Beispiel wird das Produktattribut categories
als filterbar festgelegt.
Behalten Sie beim Aktualisieren eines vorhandenen Attributs die ursprünglichen Werte des Attributs für indexableOption
, dynamicFacetableOption
und searchableOption
bei, wie im vorherigen Schritt angegeben. Wenn das ausgewählte Attribut beim Ansehen von attributesConfig
wie im vorherigen Beispiel nicht angezeigt wird, verwenden Sie die Standardeinstellungen, wie im folgenden Beispiel gezeigt.
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"
Sie können das Attribut zum Filtern verwenden, nachdem der nächste Modelltrainingszyklus abgeschlossen ist. Das dauert in der Regel mindestens acht Stunden.
Filterbare Attribute in einer Vorhersageanfrage verwenden
Nachdem das Modell neu trainiert wurde, können Sie filterbare Produktattribute in Ihren Vorhersageanfragen verwenden.
Legen Sie den Wert des Anfrageparameters filterSyntaxV2
auf „true“ fest, um das Filtern nach Empfehlungen der Version 2 zu aktivieren. Wenn der Parameter nicht festgelegt ist, bleibt die Filterung nach Version 1 aktiv. Wenn ein Modell sowohl manuell erstellte Tags als auch filterbare Produktattribute hat, kann es Vorhersageanfragen mit beiden Filterversionen bereitstellen.
Es ist jedoch nicht möglich, einen V1-Filter und einen V2-Filterausdruck in derselben Vorhersageanfrage zu verwenden.
Im folgenden Beispiel für einen partiellen curl-Befehl wird filterSyntaxV2
auf „true“ gesetzt und es wird ein Filterausdruck mit den Produktattributen colors
und categories
verwendet. In diesem Beispiel wird davon ausgegangen, dass colors
und categories
als filterbar festgelegt sind.
"params": { "filterSyntaxV2": true }, "filter": "(categories: ANY(\"Phone > Android > Pixel\") OR colors: ANY(\"red\", \"green\")) AND (availability: ANY(\"IN_STOCK\"))"
Das folgende curl-Beispiel zeigt eine vollständige Vorhersageanfrage.
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"
Zusätzlich zu den Filtern kann sich die Diversifizierungseinstellung der Bereitstellungskonfiguration auch auf die Anzahl der von der Antwort zurückgegebenen Ergebnisse auswirken.