Todos os produtos
Search
Central de documentação

:Configurar filtros

Última atualização: Jun 28, 2026

O mecanismo PAI-Rec oferece diversos modelos de filtro integrados, incluindo User2ItemExposureFilter, ItemStateFilter e AdjustCountFilter.

Configurações de filtro

Configure os filtros definindo o parâmetro FilterConfs conforme o código de exemplo a seguir. FilterConfs é um array de objetos que permite definir várias políticas de filtragem.

Visão geral das configurações comuns de filtro

Esta seção descreve as configurações comuns referenciadas por diferentes filtros. Essas definições não se repetem nas descrições detalhadas de cada filtro neste tópico.

Configuração de exemplo:

{
    "FilterConfs": [
        {
            "Name": "",
            "FilterType": "",
            "Dimension": "",
            "DaoConf": {},
            "AdjustCountConfs": [],
            "ItemStateDaoConf": {},
            "FilterParams": [],
            "DiversityDaoConf": {},
            "FilterVal": {}
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome personalizado do filtro. Utilize este nome ao configurar o parâmetro FilterNames.

FilterType

string

Sim

Tipo de filtro integrado do mecanismo. Valores válidos:

  • User2ItemExposureFilter

  • User2ItemCustomFilter

  • AdjustCountFilter

  • PriorityAdjustCountFilter

  • ItemStateFilter

  • ItemCustomFilter

  • CompletelyFairFilter

  • GroupWeightCountFilter

  • DimensionFieldUniqueFilter

Dimension

string

Não

Dimensão do item.

DaoConf

DaoConfig

Não

Informações sobre a tabela de origem.

AdjustCountConfs

Não

Configurações do filtro PriorityAdjustCountFilter.

ItemStateDaoConf

Não

Configurações do filtro ItemStateFilter.

FilterParams

Não

Configurações das condições contextuais.

User2ItemExposureFilter

Em muitos cenários de negócios, a filtragem de exposição evita recomendações repetidas. Geralmente, combina-se pseudoexposição e exposição real.

Pseudoexposição: A latência dos logs em tempo real impede a identificação imediata dos itens expostos. Por isso, a lista de itens retornada pelo mecanismo de recomendação funciona como lista de pseudoexposição.

Um mecanismo de computação em tempo real, como o Flink, grava logs em um banco de dados para consumo posterior pelo mecanismo PAI-Rec.

Os parâmetros comuns a seguir aplicam-se à filtragem de exposição para várias fontes de dados.

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome personalizado do filtro.

FilterType

string

Sim

Tipo do filtro. Defina o valor como User2ItemExposureFilter.

MaxItems

int

Sim

Número máximo de lotes recentes de itens. Equivale a limit ${MaxItems} em uma instrução SQL. MaxItems especifica o número máximo de lotes, não de itens. Cada solicitação de recomendação retorna um lote.

TimeInterval

int

Sim

Período para recuperação de itens com base em timestamps. Unidade: segundos.

WriteLog

bool

Sim

Define se o sistema deve gravar logs de exposição.

ClearLogIfNotEnoughScene

string

Não

Especifica o cenário no qual o sistema excluirá dados da tabela de exposição.

OnlyLogUserExposeFlag

bool

Não

O sistema não filtra efetivamente os dados. Se um item já foi exposto, apenas o atributo _is_exposure_ é adicionado a ele. Em alguns cenários, o pool de itens é muito pequeno e a filtragem de exposição pode eliminá-lo totalmente. Durante a reclassificação, use o atributo _is_exposure_ para aplicar boosting ou rebaixamento e evitar resultados vazios.

GenerateItemDataFuncName

string

Não

Função para gravar dados do item na tabela de exposição. Se vazio, o sistema usa a função integrada do mecanismo PAI-Rec e retorna apenas os IDs dos itens.

GenerateItemDataExpr

string

Não

Expressão para construir os dados do item a serem gravados na tabela de exposição. Para a sintaxe, consulte expr-lang/expr. Variáveis disponíveis: uid, item_id, item (atributos do item), sprintf e context. Se vazio, o sistema usa a função registrada por GenerateItemDataFuncName, que retorna apenas item_id por padrão. Fontes de dados suportadas: Hologres, TableStore, FeatureStore e RecallEngine.

GenerateUserDataExpr

string

Não

Expressão para construir o identificador de usuário na tabela de exposição. Para a sintaxe, consulte expr-lang/expr. Variáveis disponíveis: uid, context e sprintf. Se vazio, o sistema usa uid por padrão. Fontes de dados suportadas: Hologres, FeatureStore e RecallEngine.

WriteLogExcludeScenes

[]string

Não

Especifica os cenários nos quais o sistema não grava logs de exposição.

Hologres

{
    "FilterConfs": [
        {
            "Name": "holo_exposure_filter",
            "FilterType": "User2ItemExposureFilter",
            "MaxItems": 100,
            "TimeInterval": 172800,
            "WriteLog": true,
            "DaoConf": {
                "AdapterType": "hologres",
                "HologresName": "holo_info",
                "HologresTableName": "exposure_history"
            }
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. Defina o valor como hologres.

HologresName

string

Sim

Nome personalizado da fonte de dados especificado no parâmetro HologresConfs. Exemplo: holo_info.

HologresTableName

string

Sim

Nome da tabela de exposição.

Defina time_to_live_in_seconds para a tabela de exposição conforme as necessidades do seu negócio.

BEGIN;
CREATE TABLE "exposure_history" (
 "uid" text NOT NULL,
 "item" text NOT NULL,
 "create_time" int4 NOT NULL
);
CALL SET_TABLE_PROPERTY('"exposure_history"', 'orientation', 'column');
CALL set_table_property('"exposure_history"', 'distribution_key', 'uid');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'clustering_key', '"uid","create_time"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'segment_key', '"create_time"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'bitmap_columns', '"uid","item"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'dictionary_encoding_columns', '"uid","item"');
CALL SET_TABLE_PROPERTY('"exposure_history"', 'time_to_live_in_seconds', '172800');
comment on table "exposure_history" is 'Exposure history table';
COMMIT;

PAI-FeatureStore

A fonte de dados online integrada do PAI-FeatureStore, FeatureDB, utiliza um algoritmo de filtro Bloom para oferecer suporte à filtragem de exposição no PAI-Rec.

Para usar o PAI-FeatureStore nas tabelas de exposição, crie uma FeatureView em tempo real com as seguintes configurações:

Em View Name, insira user_expose. Em Write Mode, selecione Custom Table Structure. Defina Number of Shards como 5 e Number of Replicas como 1.

Configure os seguintes parâmetros principais:

  1. Em Type, selecione Real-time.

  2. Em Feature Entity, selecione user.

  3. Nos Feature Fields, adicione user_id, item_id e timestamp com os seguintes tipos de dados: string para user_id e item_id, e int64 para timestamp. Defina user_id como Primary Key e selecione timestamp como Event Time.

  4. Em Feature Lifecycle, defina o período de retenção desejado para os dados de exposição do usuário. O padrão é 2 dias.

  5. Na seção obrigatória Advanced Configuration, insira {"table_type":"bloom", "expose_count":5000}. O parâmetro table_type ativa o filtro Bloom e expose_count define o número máximo de itens de exposição retidos por usuário.

    Exemplo de configuração para filtragem de exposição no mecanismo PAI-Rec:

{
    "FilterConfs": [
        {
            "Name": "fs_exposure_filter",
            "FilterType": "User2ItemExposureFilter",
            "TimeInterval": 300,
            "WriteLog": true,
            "DaoConf": {
                "AdapterType": "featurestore",
                "FeatureStoreName": "fs_pairec",
                "FeatureStoreViewName": "user_expose"
            }
        }
    ]
}

TimeInterval é medido em segundos e define o período máximo de retenção para itens de pseudoexposição gravados pelo mecanismo. Este parâmetro aplica-se apenas quando WriteLog é true. A configuração anterior refere-se à pseudoexposição. Para exposição real, em que o mecanismo PAI-Rec não grava dados, defina WriteLog como false. Nesse cenário, o parâmetro TimeInterval é desnecessário.

Exemplo de configuração para exposição real:

"FilterConfs": [
        {
            "Name": "fs_exposure_filter2",
            "FilterType": "User2ItemExposureFilter",
            "WriteLog": false,
            "DaoConf": {
                "AdapterType": "featurestore",
                "FeatureStoreName": "fs_pairec",
                "FeatureStoreViewName": "user_expose"
            }
        }
    ]

Como os ciclos de vida para pseudoexposição e exposição real costumam diferir, utilize uma tabela FeatureView separada para cada caso.

Consulte Gravar recursos para obter instruções sobre como gravar dados de exposição real.

A tabela a seguir descreve os parâmetros em DaoConf.

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. O valor deve ser featurestore.

FeatureStoreName

string

Sim

Nome definido pelo usuário para a instância do PAI-FeatureStore, especificado em FeatureStoreConfs.

FeatureStoreViewName

string

Sim

Nome da FeatureView para a tabela de exposição.

Redis

{
    "FilterConfs": [
        {
            "Name": "redis_exposure_filter",
            "FilterType": "User2ItemExposureFilter",
            "MaxItems": 100,
            "TimeInterval": 172800,
            "WriteLog": true,
            "DaoConf": {
                "AdapterType": "redis",
                "RedisName": "redis_info",
                "RedisPrefix": "exposure_"
            }
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. Defina o valor como redis.

RedisName

string

Sim

Nome personalizado da fonte de dados especificado no parâmetro RedisConfs. Exemplo: redis_info.

RedisPrefix

string

Não

Prefixo da chave para dados de exposição. A chave consiste no valor de RedisPrefix e no ID exclusivo (UID) do usuário.

Tablestore

{
    "FilterConfs": [
        {
            "Name": "ots_exposure_filter",
            "FilterType": "User2ItemExposureFilter",
            "MaxItems": 100,
            "TimeInterval": 172800,
            "WriteLog": true,
            "DaoConf": {
                "AdapterType": "tablestore",
                "TableStoreName": "tablestore_info",
                "TableStoreTableName": "exposure_history"
            }
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. Valores válidos: hologres, mysql e tablestore.

TableStoreName

string

Sim

Nome personalizado da fonte de dados especificado no parâmetro TableStoreConfs. Exemplo: tablestore_info.

TableStoreTableName

string

Sim

Nome da tabela de exposição.

time_to_live_in_seconds: ciclo de vida dos dados. Especifique um valor personalizado para o parâmetro.

Parâmetro

Categoria

Tipo

Descrição

Exemplo

user_id

Chave primária

string

UID do usuário.

10944750

auto_id

Chave primária

integer

Coluna de incremento automático.

item_ids

Propriedade

string

IDs dos itens. Vários IDs são separados por vírgulas (,). Quando vários itens são expostos simultaneamente, o sistema insere um único registro com os IDs.

17019277,17019278

Rebaixamento por impressão

Quando o pool de recall de um usuário é pequeno, a filtragem de impressão pode eliminar todos os itens disponíveis. Para evitar isso, marque os itens já visualizados em vez de filtrá-los completamente. Durante a reclassificação, aplique boosting e rebaixamento para mover esses itens marcados para o final da lista. O exemplo a seguir demonstra essa configuração para uma fonte de dados Hologres. O processo é semelhante para outras fontes de dados.

{
    "FilterConfs": [
        {
            "Name": "holo_exposure_filter",
            "FilterType": "User2ItemExposureFilter",
            "MaxItems": 20,
            "TimeInterval": 172800,
            "WriteLog": true,
            "OnlyLogUserExposeFlag": true,
            "DaoConf": {
                "AdapterType": "hologres",
                "HologresName": "holo_info",
                "HologresTableName": "exposure_history"
            }
        }
    ],
    "SortConfs": [
        {
            "Name": "boost_score_sort",
            "SortType": "BoostScoreSort",
            "BoostScoreConditions": [
                {
                    "Conditions": [
                        {
                            "Name": "_is_exposure_",
                            "Domain": "item",
                            "Type": "int",
                            "Value": 1,
                            "Operator": "equal"
                        }
                    ],
                    "Expression": "score / 10"
                }
            ]
        }
    ]
}
This JSON example defines filter and sort configurations. The FilterConfs section uses the holo_exposure_filter to filter out items a user has already been exposed to, based on data from the exposure_history table in Hologres. The SortConfs section uses boost_score_sort for score boosting: if an item has been exposed (_is_exposure_ is 1), its score is divided by 10, reducing its ranking.

User2ItemCustomFilter

Hologres

Para filtrar dados, forneça uma tabela de filtro personalizada de usuário para item. Geralmente, essa tabela é gerada offline. Por exemplo, execute um job diário que agregue todos os itens aos quais um usuário foi exposto nos últimos 15 dias. Os IDs dos itens são então armazenados em um campo, como item_ids, como uma string separada por vírgulas.

{
    "FilterConfs": [
        {
            "Name": "u2i_custom_filter",
            "FilterType": "User2ItemCustomFilter",
            "DaoConf": {
                "AdapterType": "hologres",
                "HologresName": "holo_info",
                "HologresTableName": "u2i_custom_filter"
            },
            "ItemStateCacheSize": 10000,
            "ItemStateCacheTime": 3600
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. O valor é hologres.

HologresName

string

Sim

Nome personalizado da fonte de dados Hologres, conforme configurado em HologresConfs. Exemplo: holo_info.

HologresTableName

string

Sim

Nome da tabela de exposição personalizada.

ItemStateCacheSize

int

Não

Número máximo de entradas no cache. Um valor maior que 0 ativa o cache.

ItemStateCacheTime

int

Não

Tempo de vida (TTL) das entradas de cache, em segundos. Padrão: 3600.

O esquema da tabela é o seguinte:

Parâmetro

Categoria

Tipo

Descrição

Exemplo

user_id

chave primária

string

ID exclusivo do usuário.

10944750

item_ids

atributo

string

Lista de IDs exclusivos de itens separados por vírgulas.

17019277,17019278

Tablestore (OTS)

Para filtrar dados, forneça uma tabela de filtro personalizada de usuário para item.

{
    "FilterConfs": [
        {
            "Name": "u2i_custom_filter",
            "FilterType": "User2ItemCustomFilter",
            "DaoConf": {
                "AdapterType": "tablestore",
                "TableStoreName": "tablestore_info",
                "TableStoreTableName": "u2i_table"
            }
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. O valor é tablestore.

TableStoreName

string

Sim

Nome personalizado da fonte de dados especificado no parâmetro TableStoreConfs. Exemplo: tablestore_info.

TableStoreTableName

string

Sim

Nome da tabela de exposição personalizada.

A tabela de exposição é definida pelos seguintes parâmetros.

Parâmetro

Categoria

Tipo

Descrição

Exemplo

user_id

Chave primária

string

UID do usuário.

10944750

item_ids

Propriedade

string

IDs dos itens. Vários IDs são separados por vírgulas (,).

17019277,17019278

PAI-FeatureStore

Aviso

Este recurso suporta apenas FeatureViews que usam FeatureDB como fonte de dados online.

Assim como na filtragem de exposição descrita anteriormente, forneça uma FeatureView em tempo real. Grave dados nesta view usando um SDK Java ou conector Flink. Para detalhes, consulte Gravar recursos. O mecanismo PAI-Rec lê dados desta view para filtragem. Configure a FeatureView da seguinte forma:

Defina o nome da view como user2item_custom_filter, selecione Custom Table Structure como método de gravação e escolha Less than 10 million para a escala estimada de dados.

Parâmetros principais:

  1. Em Type, selecione Real-time.

  2. Em Feature entity, selecione user.

  3. Os Feature fields devem incluir user_id, item_id e timestamp. Defina user_id como primary key e selecione event time para timestamp. É obrigatório designar uma primary key e um event time. Quanto aos tipos de dados, user_id e item_id são string, e timestamp é int64. O timestamp está em milissegundos.

  4. O feature TTL padrão é de 2 dias. Ajuste esse valor conforme necessário. O feature TTL especifica o tempo de vida de uma linha de dados, calculado com base no valor de timestamp.

  5. O campo Advanced settings é obrigatório. Insira {"table_type":"bloom"}. O parâmetro table_type habilita o suporte a filtro bloom para a tabela criada.

    Exemplo de configuração para o mecanismo PAI-Rec:

  {
    "FilterConfs": [
        {
            "Name": "u2i_custom_filter",
            "FilterType": "User2ItemCustomFilter",
            "DaoConf": {
                "AdapterType": "featurestore",
                "FeatureStoreName": "fs_pairec",
                "FeatureStoreViewName": "u2icustom_filter"
            }
        }
    ]
}

Parâmetros de DaoConf

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. O valor é featurestore.

FeatureStoreName

string

Sim

Nome personalizado da fonte de dados PAI-FeatureStore, conforme configurado em FeatureStoreConfs.

FeatureStoreViewName

string

Sim

Nome da FeatureView usada para a tabela de filtro personalizada.

AdjustCountFilter

O AdjustCountFilter embaralha aleatoriamente os itens retornados pelos links de recall e retém um número especificado de itens.

Configuração de exemplo:

{
    "FilterConfs": [
        {
            "Name": "adjust_count_filter",
            "FilterType": "AdjustCountFilter",
            "ShuffleItem": true,
            "RetainNum": 500
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

ShuffleItem

string

Sim

Define se o sistema deve embaralhar os itens retornados pelo link de recall.

RetainNum

string

Sim

Número de itens a reter.

PriorityAdjustCountFilter

O PriorityAdjustCountFilter controla o número de itens selecionados dos resultados retornados pelos links de recall com base nas pontuações. Cada link de recall classifica os itens recomendados de acordo com suas pontuações.

Configuração de exemplo:

{
    "FilterConfs": [
        {
            "Name": "priority_adjust_count_filter",
            "FilterType": "PriorityAdjustCountFilter",
            "AdjustCountConfs": [
                {
                    "RecallName": "recall_1",
                    "Count": 125,
                    "Type": "accumulator"
                },
                {
                    "RecallName": "recall_2",
                    "Count": 250,
                    "Type": "accumulator"
                },
                {
                    "RecallName": "recall_3",
                    "Count": 400,
                    "Type": "accumulator"
                }
            ]
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome personalizado do filtro.

FilterType

string

Sim

Tipo do filtro. Defina o valor como PriorityAdjustCountFilter.

RecallName

string

Sim

Nome do link de recall.

AdjustCountConfs

json array

Sim

Configurações do filtro PriorityAdjustCountFilter.

  • Count

int

Sim

Número máximo de itens selecionados dos resultados retornados pelo link de recall.

  • Type

string

Não

Tipo de ajuste de quantidade. Valores válidos: accumulator e fix.

accumulator:

  • Na configuração acima, se o número de itens selecionados nos resultados de recall_1 for menor que 125, o sistema selecionará mais itens nos resultados de recall_2 até atingir um total de 250.

fix:

  • O número de itens selecionados nos resultados de cada link de recall é fixo. Se a quantidade de itens selecionados para um link de recall for menor que o valor especificado, o sistema não seleciona mais itens de outros links para compensar a diferença.

ItemStateFilter

Filtrar itens recuperados por estado exige buscar seus estados em tempo real, pois eles podem mudar a qualquer momento. Esses estados geralmente residem em uma tabela dedicada.

Hologres

{
    "FilterConfs": [
        {
            "Name": "ItemStateFilter",
            "FilterType": "ItemStateFilter",
            "ItemStateDaoConf": {
                "AdapterType": "hologres",
                "HologresName": "",
                "HologresTableName": "",
                "ItemFieldName": "",
                "WhereClause": "",
                "SelectFields": ""
            },
            "ItemStateCacheSize": 50000,
            "ItemStateCacheTime": 3600,
            "FilterParams": [

            ]
        }
    ]
}

Se o estado do item mudar com pouca frequência, configure as opções de cache.

Parâmetro

Tipo

Obrigatório

Descrição

ItemStateCacheSize

int

Não

Número de itens a armazenar em cache.

ItemStateCacheTime

int

Não

Tempo de vida (TTL) do cache. Unidade: segundos.

Parâmetros de ItemStateDaoConfig

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. Valores válidos: hologres, mysql e tablestore.

HologresName

string

Sim

Nome personalizado da fonte de dados especificado no parâmetro HologresConfs. Exemplo: holo_info.

HologresTableName

string

Sim

Nome da tabela que armazena os estados dos itens na instância Hologres.

ItemFieldName

string

Sim

Chave primária da tabela que armazena os estados dos itens.

WhereClause

string

Não

Instrução condicional usada para filtragem.

SelectFields

string

Sim

Campos a consultar.

Parâmetros de FilterParams

{
    "FilterParams": [
        {
            "Name": "publicStatus",
            "Type": "int",
            "Operator": "equal",
            "Value": 0
        },
        {
            "Name": "state",
            "Type": "int",
            "Operator": "equal",
            "Value": 1
        },
        {
            "Name": "checkStatus",
            "Type": "int",
            "Operator": "not_equal",
            "Value": 2
        },
        {
            "Name": "norec",
            "Type": "int",
            "Operator": "not_equal",
            "Value": 1
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome do recurso.

Domain

string

Não

Domínio do recurso. Valores válidos: user e item. O padrão é item.

Operator

string

Sim

Operador. Valores válidos: equal, not_equal, in, greater, greaterThan, less e lessThan.

Type

string

Sim

Tipo do recurso.

Value

object

Sim

Valor da condição.

Importante

Nota: Use tanto WhereClause quanto FilterParams para filtragem. WhereClause filtra dados na fonte, semelhante a uma cláusula WHERE SQL. Já FilterParams filtra localmente os dados recuperados.

Para mais informações sobre o uso de operadores, consulte o apêndice.

PAI-FeatureStore

{
    "FilterConfs": [
        {
            "Name": "ItemStateFilter",
            "FilterType": "ItemStateFilter",
            "ItemStateDaoConf": {
                "AdapterType": "featurestore",
                "FeatureStoreName": "",
                "FeatureStoreViewName": "",
                "ItemFieldName": "",
                "SelectFields": ""
            },
            "ItemStateCacheSize": 50000,
            "ItemStateCacheTime": 3600,
            "FilterParams": [

            ]
        }
    ]
}

Se o estado do item mudar com pouca frequência, configure as opções de cache.

Parâmetro

Tipo

Obrigatório

Descrição

ItemStateCacheSize

int

Não

Número de itens a armazenar em cache.

ItemStateCacheTime

int

Não

Tempo de vida (TTL) do cache. Unidade: segundos.

**Definição de ItemStateDaoConfig:**

Parâmetro

Tipo

Obrigatório

Descrição

AdapterType

string

Sim

Tipo da fonte de dados. O valor deve ser featurestore.

FeatureStoreName

string

Sim

Nome personalizado da instância PAI-FeatureStore, configurado em FeatureStoreConfs.

FeatureStoreViewName

string

Sim

Nome da feature view que armazena o estado do item.

ItemFieldName

string

Sim

Chave primária da tabela de estado do item.

SelectFields

string

Sim

Campos a recuperar.

**Definição de FilterParams:**

{
    "FilterParams": [
        {
            "Name": "publicStatus",
            "Type": "int",
            "Operator": "equal",
            "Value": 0
        },
        {
            "Name": "state",
            "Type": "int",
            "Operator": "equal",
            "Value": 1
        },
        {
            "Name": "checkStatus",
            "Type": "int",
            "Operator": "not_equal",
            "Value": 2
        },
        {
            "Name": "norec",
            "Type": "int",
            "Operator": "not_equal",
            "Value": 1
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome do recurso a filtrar.

Domain

string

Não

Domínio do recurso. Valores válidos: user e item. O padrão é item.

Operator

string

Sim

Operador de comparação. Valores suportados: equal, not_equal, in, greater, greaterThan, less e lessThan.

Type

string

Sim

Tipo do recurso.

Value

object

Sim

Valor da condição.

Para mais informações sobre o uso de operadores, consulte o apêndice.

SnakeFilter

A etapa de recall recupera um conjunto de candidatos de múltiplos canais. O SnakeFilter combina dados desses canais em ordem round-robin, com base nas proporções de peso especificadas.

Por exemplo, se houver três canais de recall (A, B e C) com pesos 1, 2 e 3, respectivamente, a lógica de combinação funciona assim:

  • Selecione um elemento do conjunto candidato A.

  • Selecione dois elementos do conjunto candidato B.

  • Selecione três elementos do conjunto candidato C.

  • Repetir esse processo até obter o número necessário de elementos.

Existem duas políticas para lidar com elementos duplicados:

  • REFILL_ON_DUPLICATE: Se um elemento recuperado de um conjunto candidato duplicar outro selecionado anteriormente, o sistema busca no mesmo conjunto um substituto exclusivo. Por exemplo, se os três elementos recuperados do conjunto C duplicarem elementos já selecionados dos conjuntos A e B, o sistema procura substitutos no conjunto C.

  • SKIP_ON_DUPLICATE: O sistema ignora elementos duplicados e passa para a próxima iteração. Por exemplo, se os três elementos recuperados do conjunto C duplicarem elementos dos conjuntos A e B, o conjunto C não retorna nenhum elemento nesta rodada. O processo inicia então uma nova iteração, começando pelo conjunto A.

{
    "FilterConfs": [
        {
            "Name": "SnakeFilter",
            "FilterType": "SnakeFilter",
            "RetainNum": 20,
            "SnakeType": "REFILL_ON_DUPLICATE",
            "AdjustCountConfs": [
                 {
                     "RecallName": "GroupHotRecall",
                     "Weight": 1
                 },
                 {
                     "RecallName": "U2IRecall",
                     "Weight": 2
                 },
                 {
                     "RecallName": "GlobalHotRecall",
                     "Weight": 3
                 }
             ]
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome personalizado do filtro.

FilterType

string

Sim

Tipo do filtro. O valor deve ser SnakeFilter.

RetainNum

string

Sim

Número de elementos a reter no conjunto candidato final.

SnakeType

string

Não

  • REFILL_ON_DUPLICATE: Continua buscando dentro do canal de recall atual para cumprir a cota. Valor padrão.

  • SKIP_ON_DUPLICATE: Ignora elementos duplicados sem repor a cota e prossegue para a próxima iteração.

AdjustCountConfs

json array

Sim

Define a configuração para cada canal de recall.

  • RecallName

string

Sim

Nome do canal de recall.

  • Weight

int

Sim

Peso relativo usado para determinar o número de entradas a recuperar deste canal de recall em cada rodada.

Nota

Aplicar este filtro adiciona o atributo snake_filter a um item. Esse atributo especifica o caminho de recall do item, sua posição indexada em zero e sua pontuação. Por exemplo, snake_filter:GroupHotRecall:0:0.144200 indica que o item vem do caminho de recall GroupHotRecall na posição 0, sendo portanto o primeiro item.

CompletelyFairFilter

O CompletelyFairFilter classifica os itens retornados pelos links de recall com base em suas pontuações e seleciona itens dos resultados de cada link de maneira equitativa.

{
    "FilterConfs": [
        {
            "Name": "CompletelyFairFilter",
            "FilterType": "CompletelyFairFilter",
            "RetainNum": 500
        }
    ]
}

DimensionFieldUniqueFilter

O DimensionFieldUniqueFilter funciona de maneira diferente do UniqueFilter, pois remove itens com valores de campo duplicados.

{
    "FilterConfs": [
        {
            "Name": "DimensionFieldUniqueFilter",
            "FilterType": "DimensionFieldUniqueFilter",
            "Dimension": ""
        }
    ]
}

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome do filtro personalizado.

FilterType

string

Sim

Tipo do filtro. Deve ser DimensionFieldUniqueFilter.

Dimension

string

Sim

Campo de atributo usado para deduplicar itens. Se este campo estiver vazio para um item, o sistema retém o item.

ConditionFilter

Este filtro composto executa dinamicamente um filtro específico com base nas condições da solicitação, como recursos do usuário ou aqueles passados no context. Configure uma ou mais combinações, vinculando cada conjunto de condições a um filtro específico definido em FilterConfs.

O exemplo anterior define dois filtros independentes: adjust_count_filter e CompletelyFairFilter. O ConditionFilter roteia solicitações com base em condições. Quando o atributo de usuário query for igual a "1", ele usa adjust_count_filter. Se nenhuma condição corresponder, ele recorre ao filtro especificado por DefaultFilterName (CompletelyFairFilter).

Parâmetros de configuração:

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome do filtro personalizado.

FilterType

string

Sim

Tipo do filtro. Defina o valor como ConditionFilter.

ConditionFilterConfs

json map

Sim

Configuração das condições.

  • FilterConfs

json array

Não

Array de regras de correspondência de condições. Quando uma solicitação corresponde a uma condição, o serviço aplica o filtro correspondente.

  • DefaultFilterName

string

Não

Se nenhuma condição em FilterConfs corresponder, o serviço aplica o filtro especificado por este parâmetro.

Configuração de FilterConfs:

Parâmetro

Tipo

Obrigatório

Descrição

Conditions

[]FilterParamConfig

Não

Condições de correspondência para a regra.

FilterName

string

Não

Nome do filtro a aplicar quando as condições forem atendidas. Este filtro deve estar definido em FilterConfs.

Configure FilterParamConfig da seguinte forma:

Parâmetro

Tipo

Obrigatório

Descrição

Name

string

Sim

Nome do recurso para um item ou usuário.

Domain

string

Sim

Valor enumerado (item ou user) que especifica se o recurso pertence a um item ou a um usuário. O Name deve existir nas properties do item ou usuário correspondente.

Operator

string

Sim

Operador de comparação. Valores possíveis: equal, not_equal, in, not_in, greater, greaterThan, less, lessThan, contains e not_contains.

Type

string

Sim

Tipo do recurso.

Value

object

Sim

Valor do recurso.

Para detalhes sobre as configurações de condição, consulte o apêndice.

UniqueFilter

O UniqueFilter garante que cada ID de item seja exclusivo. Se dois links de recall retornarem o mesmo ID de item, o UniqueFilter prioriza o ID retornado primeiro.

Use o UniqueFilter ao configurar o parâmetro FilterNames, sem necessidade de configurar o próprio UniqueFilter.

Uso de filtros

Assim como na configuração de recall, a configuração de filtro usa o parâmetro FilterNames. Este parâmetro é um Map[string]object que mapeia cada cenário a um conjunto de políticas de filtro.

  • ${scene_name}: Nome do cenário. Para aplicar a mesma configuração a vários cenários, use default.

  • UniqueFilter: Nome personalizado para um filtro definido em FilterConfigs.

Apêndice

Exemplos de operadores

  1. equal (igual ao valor especificado)

{
    "Name": "publicStatus",
    "Type": "int",
    "Operator": "equal",
    "Value": 0
}
  1. not_equal (diferente do valor especificado)

{
    "name": "checkStatus",
    "type": "int",
    "operator": "not_equal",
    "value": 2
}
  1. greater (maior que o valor especificado)

{
    "Name": "checkStatus",
    "Type": "int",
    "Operator": "greater",
    "Value": 2
}
  1. greaterThan (maior ou igual ao valor especificado)

{
    "Name": "checkStatus",
    "Type": "int",
    "Operator": "greaterThan",
    "Value": 2
}
  1. less (menor que o valor especificado)

{
    "Name": "checkStatus",
    "Type": "int",
    "Operator": "less",
    "Value": 2
}
  1. lessThan (menor ou igual ao valor especificado)

{
    "Name": "checkStatus",
    "Type": "int",
    "Operator": "lessThan",
    "Value": 2
}
  1. in (corresponde a qualquer valor em um array)

String

{
    "Name": "state",
    "Type": "string",
    "Operator": "in",
    "Value": ["success","ok"]
}
  1. not_in (não corresponde a nenhum item no array)

{
    "name": "state",
    "type": "int",
    "operator": "not_in",
    "value": [2,4,6]
}

Também é possível usar o tipo string e configurá-lo com o operador in.

  1. contains (corresponde a qualquer item em um array)

{
    "Name": "state",
    "Type": "[]int",
    "Operator": "contains",
    "Value": [2,4,6]
}

tipo string

{
    "Name": "state",
    "Type": "[]string",
    "Operator": "contains",
    "Value": ["success","ok"]
}
  1. not_contains (não contém nenhum dos itens especificados)

{
    "Name": "state",
    "Type": "[]int",
    "Operator": "not_contains",
    "Value": [2,4,6]
}
The following code uses the not_contains operator to filter for items where the state field does not contain any value from the array [2, 4, 6]. This filter is useful for excluding specific items from a query result. For example, you could use this filter to retrieve all tasks except those with a status of 'archived' (ID 2), 'on-hold' (ID 4), or 'deprecated' (ID 6).

Você também pode usar um array de strings. Para detalhes de configuração, consulte o operador contains.

  1. bool (combina múltiplos operadores de correspondência de condições)

Combine condições com or.

{
    "Operator": "bool",
    "Type": "or",
    "Configs":
    [
        {
            "Name": "publicStatus",
            "Type": "int",
            "Operator": "equal",
            "Value": 0
        },
        {
            "Name": "checkStatus",
            "Type": "int",
            "Operator": "greater",
            "Value": 2
        }
    ]
}

Usar and é semelhante: defina Type como and.

  1. expression (corresponde quando a expressão é avaliada como verdadeira)

{
    "Operator": "expression",
    "Value": "item.size == 43"
}

item.size é um atributo de item; para acessar um atributo de user, use user.xxx.

As expressões suportam operadores aritméticos, de comparação, lógicos e ternários. Exemplo mais complexo:

{
    "Operator": "expression",
    "Value": "!item.sold_out and user.list != nil ? item.size in user.list : true"
}

Para a definição completa da sintaxe de expressão, consulte https://expr-lang.org/docs/language-definition.

Nota

Os recursos de contexto fornecidos no campo features da interface do mecanismo associam-se ao user. Se Value precisar ser uma variável em vez de um valor fixo, defina-o como "user.xxx" para referenciar um atributo específico do usuário. Por exemplo, para referenciar o atributo age do usuário, a configuração é "Value":"user.age".