Visão geral da lógica de filtragem

A filtragem de itens é um dos recursos mais importantes do serviço de Recomendações Inteligentes. Os filtros ajudam a restringir milhares de itens com base em determinados parâmetros personalizáveis, como tamanho, cor, categoria, preço etc., e retornam apenas itens que atendem às necessidades e interesses do usuário final.

Este documento descreve a solução de filtragem para Recomendações Inteligentes e será dividido nestas seções:

Título da seção Visão geral
Recursos de filtragem As operações lógicas de filtragem a que oferecemos suporte.
Esquema de dados O contrato de dados para definir filtros em itens de produtos e variantes.
API A linguagem de consulta de filtragem do nosso serviço de tempo de execução.

Você deve garantir que o esquema de dados e a API sejam bem documentados, rigorosos e o mais simples possível para uma boa experiência do cliente (usuário final).

Recursos de filtragem

Você pode definir valores de filtro por item/variante e, com base nesses valores, consultar a API do serviço de tempo de execução de Recomendações Inteligentes com diferentes operadores de filtro. Para obter mais informações, consulte a seção Esquema de dados abaixo.

O serviço de Recomendações Inteligentes atualmente oferece suporte aos seguintes operadores de filtro:

  1. Igual a
  2. AND/OR
  3. Intervalo
  4. Disponibilidade

Igual a

Lógica de operador igual

Let D be the set of filter values defined for an item X, and ‘a’ be the API requested value.
X will pass the filter if and only if  a∈D. 

Exemplos:

Valores do item (D) Valor de API (a) Satisfeito
{Azul, preto, vermelho} Vermelho Verdadeiro
{Azul, preto} Vermelho False
Vermelho False

Lógica de vários valores

Esta seção abrange as regras de lógica dos operadores AND, OR, Range e Availability.

Lógica do operador para AND/OR

Operator Definição
E Let A be the API requested set of values, X will pass the filter iff A ⊆ D
ou Let A be the API requested set of values, X will pass the filter if and only if A∩D ≠∅

Observações adicionais:

  • Oferece suporte a cadeias de caracteres que não diferenciam maiúsculas de minúsculas.
  • Os valores booleanos podem ser representados por cadeias de caracteres "true" e "false".
Exemplos de lógica AND/OR
Operador lógico Valores do item (D) Valores de API (A) Satisfeito
ou {Azul, preto, vermelho} {Verde, branco} False
ou {Azul, preto, vermelho} {Verde, azul} Verdadeiro
E {Azul, preto, vermelho} {Verde, azul} False
E {Azul, preto, vermelho} {Vermelho, azul} Verdadeiro

Intervalo

O operador permite apenas valores numéricos e é satisfeito se e somente se pelo menos um dos valores de filtro de item estiver dentro do intervalo solicitado pela API.

  • Casos especiais:
    • Maior que (ou igual a)
    • Menor que (ou igual a)
Exemplos de filtragem de intervalo
valores Intervalo de API Satisfeito
{2,9,23} 5 <= valor < 15 Verdadeiro
{50,128} 128 < valor False

Filtro de disponibilidade

Este é um filtro especial baseado em tempo que filtra todos os itens que estão fora do intervalo de tempo de disponibilidade. O intervalo de tempo de disponibilidade é definido por item no esquema de dados de disponibilidade. Esse filtro sempre será executado por padrão.

Esquema de dados

O serviço de Recomendações Inteligentes permite definir até 20 filtros diferentes. É possível usar o esquema de dados a seguir para definir valores de filtro em seus itens de produto (para obter mais detalhes, consulte nosso Guia de entidade de dados do catálogo para filtros):

Name Tipo de dados Obrigatório Comentários
ItemId String Sim
ItemVariantId String No
FilterName String Sim Tamanho limitado a 64 caracteres.
FilterValue String Sim Tamanho limitado a 64 caracteres.
FilterType String Sim Valores possíveis - Textual, Numérico.

Mestre do item e variantes do item

  • Um item (ou item mestre) pode ter um relacionamento um para muitos com suas variantes de item.
  • Uma variante herda todos os atributos de seu mestre por padrão. Você pode substituir um atributo declarando-o explicitamente, conforme mostrado no exemplo abaixo.

Para filtros de vários valores, você deve fornecer várias linhas com um valor único, cada linha com um valor diferente.

Exemplo:

ItemId ItemVariantId FilterName FilterValue FilterType
Item1 Color Vermelho Textual
Item1 Item1Var1 Color Azul Textual
Item1 Item1Var1 Color Preto Textual
Item1 Size 38.0 Numérico

Neste exemplo, Item1 é o item mestre e tem uma cor Vermelho e um tamanho 38,0. Item1Var1 é uma variante de Item1 e tem duas cores: Azul e Preto (valores substituídos) e um tamanho: 38,0 (valor herdado).

API

A API de filtragem de Recomendações Inteligentes é baseada em Diretrizes da API REST da Microsoft.

$filter é o parâmetro de URL que contém a expressão Booliana de consulta completa. A expressão especificada com $filter é avaliada para cada item, e apenas os itens em que a expressão é avaliada como verdadeira são incluídos na resposta.

[Observação!]

  • Serão executados somente os filtros que corresponderem por nome (não diferencia maiúsculas de minúsculas) a um dos valores FilterName (do esquema de dados) e tiver um FilterType apropriado (textual/numérico) para a operação de filtro solicitada. O resto será ignorado.
  • Um mestre do item retornará se a expressão for avaliada como verdadeira para seus próprios valores de filtro OR para uma de suas variantes.

A tabela a seguir descreve os operadores de filtro compatíveis:

Operator Type Operator Description Exemplo
Comparação eq Igual a cor igual a 'vermelho'
Comparação gt Maior que tamanho maior que 34
Comparação ge Maior ou igual a tamanho maior ou igual a 36
Comparação lt Menor que tamanho menor que 42
Comparação le Menor ou igual a tamanho menor ou igual a 40
Lógico and and lógico tamanho menor ou igual a 44 e tamanho maior que 38
Lógico or or lógico cor igual a 'vermelho' ou cor igual a 'azul'
Agrupamento ( ) Agrupamento de precedência (cor igual a 'vermelho' ou cor igual a 'azul') e tamanho maior que 38

Exemplos do URL:

  • Reco/v1.0/New?$filter=color eq ‘Red’
  • Reco/v1.0/Popular?$filter=color eq ‘Red’ and size lt 40
  • Reco/v1.0/Picks?$filter=(name eq ‘Red’ or name eq 'Blue') and size le 44 and size gt 38

[!Observação]

A codificação de URL é necessária.

Cenários com suporte
  • Operador lógico AND entre diferentes filtros.
  • Operador OR entre diferentes valores do mesmo filtro. Tratamento de erros: para uma consulta sem suporte, o serviço retornará um status HTTP de solicitação incorreto (400).

Confira também

API de Recomendações Inteligentes
Guia de início rápido para chamar a API
Erros comuns de registro
Visão geral do contrato de dados