Empfehlungen filtern

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:

  • Empfohlen wird Version 2.
  • Version 1 wurde eingestellt, wird aber möglicherweise noch verwendet.

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.

  1. Aktivieren Sie das Filtern von Empfehlungen für ein Modell, das gefilterte Empfehlungen bereitstellt.
  2. Aktivieren Sie das Filtern von Empfehlungen nach Produktattributen, nach denen Sie filtern möchten.
  3. 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 und OR 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 mit AND verbundene Liste von Klauseln sein, die nur OR-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 mit ANY()-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 einer OR-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 in ANY()-Ausdrücken enthalten sind. Wenn eine OR-Klausel mehrere ANY()-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
categories: ANY(\"Phone > Android > Pixel\")
Ja
(colors: ANY("red") OR colors: ANY("green")) AND
categories: ANY(\"Phone > Android > Pixel\")
Ja
(colors: ANY("red") AND colors: ANY("green")) OR
categories: ANY(\"Phone > Android > Pixel\")
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 und category 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 Standardwert category-match-level = relaxed-category-match. Wechseln Sie zu category-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.

  1. Rufen Sie in der Search for Retail-Konsole die Seite Steuerelemente auf.

    Zur Seite „Einstellungen“

  2. Wechseln Sie zum Tab Attributsteuerungen.

    Auf diesem Tab wird eine Tabelle mit allen Produktattributen angezeigt, für die Sie websiteweite Steuerungen festlegen können.

  3. Klicken Sie auf Steuerelemente ändern.

  4. Setzen Sie Filterable (Filterbar) für das Produktattribut auf True.

  5. 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.