Esta página descreve a filtragem de resultados para recomendações através de atributos dos produtos.
Pode filtrar os resultados da previsão especificando uma expressão de filtro em pedidos de previsão. A expressão de filtro é uma expressão lógica que é avaliada para cada produto. A lista de produtos na resposta é restrita aos produtos em que a expressão é avaliada como verdadeira.
Existem duas versões de filtragem para recomendações:
As secções deste guia de instruções aplicam-se apenas à versão 2 da filtragem, que filtra as recomendações através dos atributos dos produtos.
Filtragem de recomendações, versão 2
A versão 2 usa atributos de produtos. As expressões de filtro baseiam-se nos atributos dos produtos. Podem ser atributos do sistema predefinidos, como categories
e colors
, ou atributos personalizados que define, como attributes.styles
. Quando define um atributo do produto como filtrável, as recomendações podem usar automaticamente esses atributos como etiquetas para a filtragem de recomendações, em vez de exigir que adicione manualmente etiquetas de filtro.
Quando usa atributos para filtrar produtos, a resposta de previsão devolve produtos principais que contêm, pelo menos, um produto principal ou variante com um valor de atributo que corresponde à expressão de filtro. Para saber mais acerca dos produtos principais e variantes, consulte o artigo Níveis de produtos.
O exemplo de expressão de filtro seguinte também filtra todos os produtos vermelhos ou azuis definidos como "New-Arrival" e não definidos como promocionais:
colors: ANY("red", "blue") AND attributes.status: ANY("New-Arrival") AND NOT attributes.is_promotional: ANY("true")
Para usar a versão 2 da filtragem de recomendações, siga estes procedimentos. Cada procedimento é apresentado mais adiante nesta página.
- Ative a filtragem de recomendações para um modelo que vai apresentar recomendações filtradas.
- Ative a filtragem de recomendações para atributos dos produtos que planeia usar para filtragem.
- Use atributos de produtos filtráveis em pedidos de previsão.
Filtragem de recomendações, versão 1 (descontinuada)
A versão 1 usa etiquetas de filtro criadas manualmente. As expressões de filtro baseiam-se em etiquetas de filtro, que tem de adicionar manualmente a todos os produtos no seu catálogo que planeia filtrar.
O exemplo de expressão de filtro seguinte usa etiquetas de filtro para especificar produtos etiquetados como "Vermelho" ou "Azul", bem como a etiqueta "New-Arrival", e não estão etiquetados como "promocional":
tag=("Red" OR "Blue") tag="New-Arrival" tag=(NOT "promotional")
Consulte a documentação de referência da API para o campo Product.tags[]
.
As expressões de etiquetas podem conter os operadores booleanos OR
ou NOT
, que têm de ser separados dos valores das etiquetas por um ou mais espaços. Também pode antepor imediatamente um traço (-
) aos valores das etiquetas, o que é equivalente ao operador NOT
. As expressões de etiquetas que usam os operadores booleanos têm de estar
entre parênteses.
Além das etiquetas, pode filtrar por filterOutOfStockItems
.
A opção filterOutOfStockItems
filtra todos os produtos com um stockState
de OUT_OF_STOCK
.
Pode combinar filtros de etiquetas e filtros de esgotado para que apenas sejam devolvidos os itens que satisfaçam todas as expressões de filtro especificadas.
Alguns exemplos de strings de filtro:
"filter": "tag=\"spring-sale\""
"filter": "filterOutOfStockItems"
"filter": "tag=\"spring-sale\" tag=\"exclusive\" filterOutOfStockItems"
O exemplo seguinte devolve apenas itens em stock que tenham a etiqueta spring-sale
ou exclusive
(ou ambas) e que também não tenham a etiqueta items-to-exclude
.
"filter": "tag=(\"spring-sale\" OR \"exclusive\") tag=(-\"items-to-exclude\") filterOutOfStockItems"
Compatibilidade entre o filtro de atributos e o filtro de etiquetas
Se um modelo tiver etiquetas criadas manualmente e atributos dos produtos filtráveis, pode publicar pedidos de previsão usando qualquer uma das versões de filtragem. No entanto, não é possível incluir expressões de filtragem v1 e v2 no mesmo pedido de previsão.
Limites de filtragem de recomendações
Adicione manualmente critérios de filtro para restringir o conjunto de recomendações devolvidas aos utilizadores finais. Use a Vertex AI Search for commerce para aplicar regras empresariais para otimizar o que os clientes veem, incluindo opções de filtragem por disponibilidade do produto, etiquetas personalizadas e outros critérios.
Cada atributo filtrável consome alguma memória em cada um dos seus modelos. Os seguintes limites ajudam a evitar efeitos adversos no desempenho da publicação:
- Pode definir até 10 atributos personalizados como filtráveis no seu catálogo.
Podem estar presentes até 100 000 000 de valores de atributos filtráveis no seu catálogo.
Pode estimar o número total de valores de atributos no seu catálogo multiplicando o número de produtos no catálogo pelo número de atributos filtráveis.
Por exemplo, se tiver um catálogo com 1000 produtos e 3 atributos definidos como filtráveis, o número total de valores de atributos pode ser estimado como 3*1000=3000.
Se estiver a usar a filtragem de recomendações da versão 1 juntamente com a versão 2, o número de etiquetas de filtro conta para a sua quota. Certifique-se de que o número de etiquetas de filtro adicionadas ao número total de valores de atributos é inferior a 100 000 000.
Se exceder os limites, não pode definir atributos adicionais como filtráveis. Se precisar de exceder estes limites, peça um aumento da quota.
O número total de etiquetas é calculado durante a preparação do modelo. Se o número total exceder o limite, a preparação do modelo falha. Se forem encontrados mais de 10 atributos personalizados filtráveis durante a preparação do modelo, apenas são usados 10.
Sintaxe da expressão de filtro de recomendações
As sintaxes das expressões de filtro para a pesquisa e as recomendações são semelhantes. No entanto, as recomendações têm várias limitações.
A sintaxe da expressão de filtro de recomendações pode ser resumida pela seguinte 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;
Restrições de sintaxe de filtros
Aplicam-se as seguintes restrições:
- A profundidade da incorporação dos operadores
AND
eOR
entre parênteses é limitada. As expressões lógicas no filtro têm de estar na forma normal conjuntiva (CNF). A expressão lógica mais complexa suportada pode ser uma lista de cláusulas ligadas porAND
que contenham apenas operadoresOR
, como:(... OR ... OR ...) AND (... OR ...) AND (... OR ...)
- As expressões podem ser negadas com a palavra-chave
NOT
ou com-
. Isto só funciona com expressõesANY()
com um único argumento que não incluem atributos relacionados com o inventário. - As restrições baseadas em
availability
têm de estar no nível superior. Não podem ser usados como parte de uma cláusulaOR
ou uma negação (NOT
). - Uma vez que a filtragem de recomendações padrão só suporta campos de texto, as operações de verificação de intervalo, inferior a e superior a não são suportadas para a filtragem de recomendações padrão. As operações inferior a e superior a só podem ser usadas com condições de controlo de amplificação ou ocultação de recomendações, que suportam alguns campos numéricos (consulte Campos suportados de amplificação/ocultação).
- O número máximo de termos na cláusula
AND
de nível superior é 20. - Uma cláusula
OR
pode ter até 100 argumentos incluídos em expressõesANY()
. Se uma cláusulaOR
tiver várias expressõesANY()
, todos os respetivos argumentos são contabilizados para este limite. Por exemplo,colors: ANY("red", "green") OR colors: ANY("blue")
tem três argumentos. Para o exemplo de utilização do Vertex AI Search for commerce, pode considerar um argumento como o equivalente a um valor de atributo.
A tabela seguinte mostra exemplos de expressões de filtro válidas, bem como exemplos inválidos e os motivos pelos quais são inválidos.
Expressão | Válido | Notas |
---|---|---|
colors: ANY("red", "green") |
Sim | |
NOT colors: ANY("red") |
Sim | |
NOT colors: ANY("red", green") |
Não | Nega um `ANY()` com mais de um argumento. |
colors: ANY("red", "green") OR |
Sim | |
(colors: ANY("red") OR colors: ANY("green")) AND |
Sim | |
(colors: ANY("red") AND colors: ANY("green")) OR |
Não | Não está na forma normal conjuntiva. |
(colors: ANY("red")) AND (availability: ANY("IN_STOCK") |
Sim | |
(colors: ANY("red")) OR (availability: ANY("IN_STOCK")) |
Não | Combina availability numa expressão OR com outras condições. |
Filtragem de atributos relacionados com o inventário
A filtragem com base em atributos relacionados com o inventário baseia-se no estado em tempo real dos seus produtos. Para a filtragem availability: ANY("IN_STOCK")
, a resposta de previsão devolve produtos principais em que o produto principal ou uma variante tem o valor correspondente de IN_STOCK
. Para saber mais acerca dos produtos principais e variantes, consulte o artigo
Níveis de produtos. Não suportamos a filtragem Primary only
nem Variant only
.
IN_STOCK
é o único valor do atributo availability
suportado pela versão 2 da filtragem de recomendações.
Os atributos relacionados com o inventário podem ser usados em cláusulas AND
, mas não em cláusulas OR
.
Campos suportados
Os campos de texto suportados estão resumidos na tabela seguinte.
Aumentar ou ocultar para recomendações suporta campos adicionais que não são suportados pela filtragem de recomendações padrão. Para ver uma lista destes campos, consulte o artigo Campos suportados para aumentar/diminuir a visibilidade.
campo | descrição |
---|---|
"productId" | O ID do produto (o último segmento de Product.name). |
"brands" | O elemento Product.brands. |
"categories" | O elemento Product.categories. |
"genders" | The Audience.genders. |
"ageGroups" | O Audience.age_groups. |
"colorFamilies" | O ColorInfo.color_families. |
"colors" | The ColorInfo.colors. |
"sizes" | O elemento Product.sizes. |
"materials" | O Product.materials. |
"patterns" | O Product.patterns. |
"condições" | O elemento Product.conditions. |
"attributes.key" | O atributo personalizado textual no objeto Product. A chave pode ser qualquer chave no mapa Product.attributes, se os valores dos atributos forem textuais. |
Campos suportados para aumentar/diminuir a visibilidade
A funcionalidade de aumentar/diminuir a prioridade suporta alguns campos adicionais que não são suportados pela filtragem de recomendações padrão, incluindo campos numéricos.
Além dos campos indicados em Campos suportados, o aumento/ocultação para recomendações suporta os seguintes campos:
Campos textuais
campo | descrição |
---|---|
"tags" |
Product.tags[] . Etiquetas personalizadas associadas ao produto. |
Campos numéricos
campo | descrição |
---|---|
"price" | PriceInfo.price . O preço do produto. |
"discount" |
O desconto do produto. Este campo é calculado com base nos valores dos campos de preço e preço original de PriceInfo .
|
"rating" |
Product.rating . O número total de classificações do produto.
|
"ratingCount" |
rating.ratingCount . O número total de classificações do produto.
|
Defina a filtragem de recomendações para um modelo
Pode ativar a filtragem de recomendações através da
consola de pesquisa para comércio ou do recurso da API Models
.
Na consola, pode criar um novo modelo com a filtragem de recomendações ativada. Também pode atualizar esta opção para modelos existentes.
Através do recurso da API Models
, pode criar um novo modelo com a filtragem de recomendações ativada ou atualizar esta definição para um modelo existente através de models.Patch
.
Tenha em atenção que, se a configuração de publicação que devolve previsões tiver a correspondência de categorias ativada, a filtragem não funciona no atributo "categories" porque a resposta devolve apenas resultados de produtos que partilham uma categoria com o produto de contexto.
Defina a filtragem para um modelo através da consola
Na consola de pesquisa de comércio, selecione a opção Gerar etiquetas automaticamente durante a criação do modelo para permitir a filtragem de recomendações para esse modelo.
Verifique novamente a compatibilidade com outras definições, como diversity-level
e category-match-level
, etc., porque os efeitos totais combinam-se e a filtragem ocorre por último.
- Por exemplo, a combinação de
diversity-level
com base em regras ecategory attribute filtering
resulta frequentemente numa saída vazia.diversity-level=high-diversity
força o modelo a limitar os resultados máximos para as mesmas strings de categorias. Ou seja, 1 resultado para a categoria 1, 1 resultado para a categoria 2, etc.- A filtragem de atributos com metadados de categorias (
Product.categories = ANY ("category2")
) faz com que o modelo rejeite os artigos que não correspondem. - A saída final tem menos de três resultados.
- Para o modelo
similar-items
, já contém um aumento da relevância da categoria adicional com o valor predefinidocategory-match-level = relaxed-category-match
. Mude paracategory-match-level=no-category-match
para desativar o comportamento e usar regras de filtragem personalizadas.
Consulte o artigo Crie modelos de recomendações para ver instruções sobre como criar um modelo de recomendações através da consola.
Não é possível atualizar esta definição na consola para modelos existentes. Para atualizar esta definição para um modelo, use o método da API models.Patch
.
Defina a filtragem para um modelo através da API
Pode ativar a filtragem de recomendações para um modelo através de
models.Create
quando cria um novo modelo ou
models.Patch
quando atualiza um modelo existente.
Para permitir a filtragem, defina o campo filteringOption
para o seu modelo. Os valores permitidos deste campo são:
RECOMMENDATIONS_FILTERING_DISABLED
(predefinição): a filtragem está desativada para o modelo.RECOMMENDATIONS_FILTERING_ENABLED
: a filtragem está ativada para produtos principais.
O exemplo de curl seguinte cria um novo modelo com a filtragem de recomendações ativada.
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"
O seguinte exemplo de curl atualiza a definição da opção de filtragem para um modelo existente.
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"
Defina atributos como filtráveis
Para filtrar produtos recomendados, ative a filtragem para os atributos do produto que vai usar em expressões de filtro. Pode atualizar esta definição através da consola de pesquisa de comércio ou do recurso da API Attributes
.
Não torne mais atributos filtráveis do que o necessário. Existe um limite no número de atributos filtráveis.
Defina atributos como filtráveis através da consola
Pode definir um atributo como filtrável na página de controlos na consola de pesquisa para comércio.
Aceda à página Controlos na consola de pesquisa para comércio.
Aceda à página ControlosAceda ao separador Controlos de atributos.
Este separador apresenta uma tabela de todos os atributos dos produtos para os quais pode definir controlos ao nível do site.
Clique em editModificar controlos.
Defina Filterable como True para o atributo do produto.
Clique em Guardar controlos.
Pode começar a usar o atributo para filtragem após a conclusão do ciclo de preparação do modelo seguinte.
Defina atributos como filtráveis através da API
AttributesConfig
representa uma lista de atributos de um catálogo.
Defina o campo AttributesConfig.filteringOption
para CatalogAttribute
. Os valores permitidos deste campo são:
RECOMMENDATIONS_FILTERING_DISABLED
(predefinição): a filtragem está desativada para o atributo.RECOMMENDATIONS_FILTERING_ENABLED
: a filtragem está ativada para o atributo.
O exemplo de curl seguinte consulta os atributos dos produtos existentes.
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"
O exemplo de curl seguinte define o atributo do produto categories
como filtrável.
Quando atualiza um atributo existente, mantenha os valores originais do atributo para indexableOption
, dynamicFacetableOption
e searchableOption
, tal como aparecem no passo anterior. Se o atributo escolhido não aparecer quando
visualizar attributesConfig
, tal como no exemplo anterior, use as definições
predefinidas, conforme mostrado no exemplo seguinte.
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"
Pode começar a usar o atributo para filtragem após a conclusão do ciclo de preparação do modelo seguinte. Normalmente, este processo demora, pelo menos, oito horas.
Use atributos filtráveis num pedido de previsão
Depois de voltar a formar o modelo, pode usar atributos de produtos filtráveis nos pedidos de previsão.
Defina o valor do parâmetro de pedido filterSyntaxV2
como verdadeiro para ativar a filtragem de recomendações da versão 2. Se o parâmetro não estiver definido, a filtragem da versão 1 permanece ativa. Se um modelo tiver etiquetas criadas manualmente e atributos de produtos filtráveis, pode publicar pedidos de previsão usando qualquer uma das versões de filtragem.
No entanto, não é possível incluir expressões de filtragem v1 e v2 no mesmo pedido de previsão.
O exemplo de curl parcial seguinte mostra filterSyntaxV2
definido como verdadeiro e uma expressão de filtro que usa os atributos do produto colors
e categories
. Este exemplo pressupõe que colors
e categories
estão definidos como filtráveis.
"params": { "filterSyntaxV2": true }, "filter": "(categories: ANY(\"Phone > Android > Pixel\") OR colors: ANY(\"red\", \"green\")) AND (availability: ANY(\"IN_STOCK\"))"
O exemplo de curl seguinte mostra um pedido de previsão completo.
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"
Além dos filtros, a definição de diversificação da configuração de publicação também pode afetar o número de resultados devolvidos pela resposta.