Tous les produits
Search
Centre de documentation

:Feature configuration

Dernière mise à jour :Aug 11, 2026

FeatureConfs contrôle les fonctionnalités utilisateur et élément que la phase de classement fin charge, ainsi que leur transformation avant le scoring. Il associe les noms de scénario aux configurations de chargement des fonctionnalités, permettant à différents scénarios d'utiliser des ensembles de fonctionnalités distincts.

{
  "FeatureConfs": {
    "<scene_name>": { ... }
  }
}

Concepts clés

Terme Description
FeatureConfs Mappage de niveau supérieur. La clé correspond au nom du scénario ; la valeur est un objet de configuration de chargement des fonctionnalités.
FeatureLoadConfs Liste des tâches de chargement des fonctionnalités au sein d'un scénario. Chaque tâche extrait les fonctionnalités d'une source de données unique.
FeatureDaoConf Configuration d'accès aux données pour une tâche de chargement individuelle : spécifie le type de source de données, la connexion et la sélection des champs.
FeatureKey Clé de recherche. Format : <side>:<field>. Par exemple, user:uid recherche le champ uid côté utilisateur ; item:id recherche le champ id côté élément.
FeatureStore Emplacement de stockage des fonctionnalités récupérées. Valeurs valides : user ou item.
AsynLoadFeature Lorsque la valeur est true, toutes les tâches dans FeatureLoadConfs s'exécutent simultanément, réduisant ainsi le temps total de chargement.

Choisir une source de données

Les fonctionnalités peuvent être chargées depuis Hologres, PAI-FeatureStore, Tablestore (OTS) et Redis. Le tableau ci-dessous résume les principales différences.

Capacité Hologres PAI-FeatureStore Tablestore (OTS) Redis
Valeur AdapterType hologres featurestore tablestore redis
Sélection des champs (UserSelectFields / ItemSelectFields) Oui Oui (avec vue de fonctionnalités) Oui Oui (format HASH uniquement)
Cache local (CacheSize / CacheTime) Oui Oui Oui Oui
Sélection de vue de fonctionnalités Non Oui Non Non
Options de format de données — — — string (CSV / JSON) ou hash

Hologres

Chaque entrée dans FeatureLoadConfs charge les données depuis une table Hologres unique. Configurez des entrées séparées pour les fonctionnalités utilisateur et élément.

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "hologres",
            "HologresName": "holo-pai",
            "FeatureKey": "user:uid",
            "UserFeatureKeyName": "user_id",
            "HologresTableName": "recom_user_features_processed_holo_online",
            "UserSelectFields": "rids_count,sex,alladdfriendnum,allpayrosenum",
            "FeatureStore": "user"
          },
          "Features": []
        },
        {
          "FeatureDaoConf": {
            "AdapterType": "hologres",
            "HologresName": "holo-pai",
            "ItemFeatureKeyName": "item_id",
            "FeatureKey": "item:id",
            "HologresTableName": "recom_user_features_processed_holo_online",
            "ItemSelectFields": "rids_count as rids2_count,sex as guestsex,alladdfriendnum as alladdfriendnum2",
            "FeatureStore": "item"
          },
          "Features": []
        }
      ]
    }
  }
}

Paramètres FeatureLoadConfs/FeatureDaoConf

Paramètre Type Obligatoire Description
AdapterType string Oui Définissez sur hologres.
HologresName string Oui Nom de l'instance Hologres tel que défini dans HologresConfs. Par exemple, holo_info.
FeatureKey string Oui Clé de recherche. Par exemple, user:uid recherche le champ uid côté utilisateur ; item:id recherche le champ id côté élément.
UserFeatureKeyName string Oui Champ de clé primaire de la table des fonctionnalités utilisateur.
ItemFeatureKeyName string Oui Champ de clé primaire de la table des fonctionnalités élément.
HologresTableName string Oui Nom de la table des fonctionnalités dans Hologres.
UserSelectFields string Non Fonctionnalités utilisateur à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.
ItemSelectFields string Non Fonctionnalités élément à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.
FeatureStore string Oui Emplacement de stockage des fonctionnalités récupérées. Valeurs valides : user ou item.
CacheSize integer Non Nombre d'entrées de fonctionnalités à mettre en cache localement. Valeur par défaut : 0 (pas de mise en cache).
CacheTime integer Non Durée d'expiration des entrées mises en cache, en secondes. Prend effet uniquement lorsque CacheSize est supérieur à 0. Valeur par défaut : 3600.

PAI-FeatureStore

Pour les instructions de configuration, consultez Présentation de FeatureStore.

Charger toutes les fonctionnalités d'une entité

La configuration suivante récupère toutes les fonctionnalités de l'entité user à partir du modèle rank_v1 :

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "featurestore",
            "FeatureStoreName": "pairec-fs",
            "FeatureKey": "user:uid",
            "FeatureStoreModelName": "rank_v1",
            "FeatureStoreEntityName": "user",
            "FeatureStore": "user"
          }
        }
      ]
    }
  }
}

Pour charger les fonctionnalités élément à la place, définissez FeatureKey sur item:id, FeatureStoreEntityName sur item, et FeatureStore sur item.

Paramètres FeatureLoadConfs/FeatureDaoConf

Paramètre Type Obligatoire Description
AdapterType string Oui Définissez sur featurestore.
FeatureStoreName string Oui Nom de l'instance FeatureStore tel que défini dans FeatureStoreConfs. Par exemple, pairec-fs.
FeatureKey string Oui Clé de recherche. Par exemple, user:uid ou item:id.
FeatureStoreModelName string Oui Nom de la fonctionnalité du modèle dans PAI-FeatureStore.
FeatureStoreEntityName string Oui Nom de l'entité dans PAI-FeatureStore.
FeatureStore string Oui Emplacement de stockage des fonctionnalités récupérées. Valeurs valides : user ou item.
CacheSize integer Non Nombre d'entrées de fonctionnalités à mettre en cache localement. Valeur par défaut : 0 (pas de mise en cache).
CacheTime integer Non Durée d'expiration des entrées mises en cache, en secondes. Prend effet uniquement lorsque CacheSize est supérieur à 0. Valeur par défaut : 3600.

Charger les fonctionnalités depuis une vue de fonctionnalités spécifique

Pour récupérer les fonctionnalités depuis une vue de fonctionnalités nommée plutôt qu'une entité entière, utilisez FeatureStoreViewName. L'exemple suivant récupère toutes les fonctionnalités utilisateur depuis la vue user_table_preprocess_all_feature_v1 et un sous-ensemble de fonctionnalités élément depuis la vue item_table_preprocess_all_feature_v1 :

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "featurestore",
            "FeatureStoreName": "pairec-fs",
            "FeatureKey": "user:uid",
            "FeatureStoreViewName": "user_table_preprocess_all_feature_v1",
            "UserSelectFields": "*",
            "FeatureStore": "user"
          }
        },
        {
          "FeatureDaoConf": {
            "AdapterType": "featurestore",
            "FeatureStoreName": "pairec-fs",
            "FeatureKey": "item:id",
            "FeatureStoreViewName": "item_table_preprocess_all_feature_v1",
            "ItemSelectFields": "author,duration,category",
            "FeatureStore": "item"
          }
        }
      ]
    }
  }
}
Paramètre Type Obligatoire Description
FeatureStoreViewName string Oui Nom de la vue de fonctionnalités.
UserSelectFields string Non Fonctionnalités utilisateur à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.
ItemSelectFields string Non Fonctionnalités élément à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.

Tablestore (OTS)

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "tablestore",
            "TableStoreName": "tablestore_info",
            "FeatureKey": "user:uid",
            "UserFeatureKeyName": "uid",
            "TableStoreTableName": "",
            "UserSelectFields": "*",
            "FeatureStore": "user"
          },
          "Features": []
        },
        {
          "FeatureDaoConf": {
            "AdapterType": "tablestore",
            "TableStoreName": "tablestore_info",
            "FeatureKey": "item:id",
            "ItemFeatureKeyName": "item_id",
            "TableStoreTableName": "",
            "ItemSelectFields": "*",
            "FeatureStore": "item"
          },
          "Features": []
        }
      ]
    }
  }
}

Paramètres FeatureLoadConfs/FeatureDaoConf

Paramètre Type Obligatoire Description
AdapterType string Oui Définissez sur tablestore.
TableStoreName string Oui Nom de l'instance Tablestore tel que défini dans TableStoreConfs. Par exemple, tablestore_info.
FeatureKey string Oui Clé de recherche. Par exemple, user:uid ou item:pair_id.
UserFeatureKeyName string Non Champ de clé primaire de la table des fonctionnalités utilisateur.
ItemFeatureKeyName string Non Champ de clé primaire de la table des fonctionnalités élément.
TableStoreTableName string Oui Nom de la table des fonctionnalités dans Tablestore.
UserSelectFields string Non Fonctionnalités utilisateur à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.
ItemSelectFields string Non Fonctionnalités élément à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2.
FeatureStore string Oui Emplacement de stockage des fonctionnalités récupérées. Valeurs valides : user ou item.
CacheSize integer Non Nombre d'entrées de fonctionnalités à mettre en cache localement. Valeur par défaut : 0 (pas de mise en cache).
CacheTime integer Non Durée d'expiration des entrées mises en cache, en secondes. Prend effet uniquement lorsque CacheSize est supérieur à 0. Valeur par défaut : 3600.

Redis

Redis prend en charge deux formats de stockage : clé-valeur (KV) et HASH.

  • KV format : la valeur peut être au format CSV (avec un délimiteur configurable) ou JSON.

  • Format HASH : récupère tous les champs ou une sélection de champs par leur nom en utilisant UserSelectFields ou ItemSelectFields.

Format KV

Dans cet exemple, les fonctionnalités utilisateur sont stockées au format CSV et les fonctionnalités élément au format JSON. RedisValueDelimeter spécifie le séparateur CSV.

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "redis",
            "RedisName": "user_redis",
            "RedisPrefix": "UF_V2_",
            "FeatureKey": "user:uid",
            "FeatureStore": "user",
            "RedisDataType": "string",
            "RedisFieldType": "csv",
            "RedisValueDelimeter": ","
          },
          "Features": []
        },
        {
          "FeatureDaoConf": {
            "AdapterType": "redis",
            "RedisName": "item_redis",
            "RedisPrefix": "IF_V2_FM_",
            "FeatureKey": "item:id",
            "FeatureStore": "item",
            "RedisDataType": "string",
            "RedisFieldType": "json"
          },
          "Features": []
        }
      ]
    }
  }
}

Format HASH

{
  "FeatureConfs": {
    "scene_name": {
      "AsynLoadFeature": true,
      "FeatureLoadConfs": [
        {
          "FeatureDaoConf": {
            "AdapterType": "redis",
            "RedisName": "user_redis",
            "RedisPrefix": "UF_V2_",
            "FeatureKey": "user:uid",
            "FeatureStore": "user",
            "RedisDataType": "hash",
            "UserSelectFields": "*"
          },
          "Features": []
        },
        {
          "FeatureDaoConf": {
            "AdapterType": "redis",
            "RedisName": "item_redis",
            "RedisPrefix": "IF_V2_FM_",
            "FeatureKey": "item:id",
            "FeatureStore": "item",
            "RedisDataType": "hash",
            "ItemSelectFields": "city,author,duration"
          },
          "Features": []
        }
      ]
    }
  }
}

Paramètres FeatureLoadConfs/FeatureDaoConf

Paramètre Type Obligatoire Description
AdapterType string Oui Définissez sur redis.
RedisName string Oui Nom de l'instance Redis tel que défini dans RedisConfs. Par exemple, redis_info.
RedisPrefix string Oui Préfixe de la clé.
FeatureKey string Oui Clé de recherche. Par exemple, user:uid ou item:pair_id.
FeatureStore string Oui Emplacement de stockage des fonctionnalités récupérées. Valeurs valides : user ou item.
RedisDataType string Oui Format de stockage des données. Valeurs valides : string ou hash.
RedisFieldType string Non Format des champs lorsque RedisDataType est string. Valeurs valides : csv ou json.
RedisValueDelimeter string Non Séparateur CSV. Prend effet uniquement lorsque RedisFieldType est csv.
UserSelectFields string Non Fonctionnalités utilisateur à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2. Prend effet uniquement lorsque RedisDataType est hash.
ItemSelectFields string Non Fonctionnalités élément à récupérer. Utilisez * pour tout sélectionner, ou une liste séparée par des virgules telle que feature1,feature2. Prend effet uniquement lorsque RedisDataType est hash.
CacheSize integer Non Nombre d'entrées de fonctionnalités à mettre en cache localement. Valeur par défaut : 0 (pas de mise en cache).
CacheTime integer Non Durée d'expiration des entrées mises en cache, en secondes. Prend effet uniquement lorsque CacheSize est supérieur à 0. Valeur par défaut : 3600.

Transformation des fonctionnalités

Une fois les fonctionnalités chargées, vous pouvez dériver de nouvelles fonctionnalités ou recombiner celles existantes à l'aide de trois types de transformation :

**FeatureType** Description
new_feature Génère une nouvelle fonctionnalité à partir de zéro ou d'une expression.
raw_feature Crée une copie renommée d'une fonctionnalité existante.
compose_feature Combine plusieurs fonctionnalités existantes en une seule fonctionnalité composite.

Les configurations de transformation des fonctionnalités sont définies directement dans chaque entrée FeatureLoadConf , aux côtés de FeatureDaoConf.

new_feature

Utilisez new_feature pour générer des fonctionnalités absentes de la source de données : valeurs temporelles, nombres aléatoires, constantes ou résultats d'expressions.

Valeurs temporelles et aléatoires

{ "FeatureType": "new_feature", "FeatureName": "day_h", "Normalizer": "hour_in_day", "FeatureStore": "user" }
{ "FeatureType": "new_feature", "FeatureName": "week_day", "Normalizer": "weekday", "FeatureStore": "user" }
{ "FeatureType": "new_feature", "FeatureName": "rand_int_v", "Normalizer": "random", "FeatureStore": "user" }

hour_in_day et weekday génèrent des valeurs en temps réel basées sur l'heure système actuelle. random génère un entier dans la plage [0, 100).

Valeur constante

L'exemple suivant génère une fonctionnalité nommée alg avec la valeur statique ALRC :

{
  "FeatureType": "new_feature",
  "FeatureStore": "user",
  "Normalizer": "const_value",
  "FeatureValue": "ALRC",
  "FeatureName": "alg"
}

Expression (recommandé)

Utilisez Normalizer: "expr" pour les fonctionnalités basées sur des expressions. Cette méthode utilise la bibliothèque expr et offre une syntaxe plus flexible ainsi que de meilleures performances que l'ancienne méthode expression.

Référencez les fonctionnalités côté élément avec le préfixe item. et les fonctionnalités côté utilisateur avec le préfixe user.. Utilisez currentTime pour obtenir l'horodatage Unix actuel en secondes.

L'exemple suivant génère une fonctionnalité booléenne is_retarget (représentée par 1 ou 0) :

{
  "FeatureType": "new_feature",
  "FeatureStore": "item",
  "Normalizer": "expr",
  "Expression": "item.recall_name in ['retarget_u2i','realtime_retarget_click']",
  "FeatureName": "is_retarget"
}

Pour combiner les fonctionnalités côté utilisateur et côté élément dans la même expression :

{
  "FeatureType": "new_feature",
  "FeatureStore": "item",
  "Normalizer": "expr",
  "Expression": "user.user_index - item.index",
  "FeatureName": "index_delta"
}

Pour la syntaxe des expressions, consultez la définition du langage expr.

Expression (hérité)

Normalizer: "expression" utilise la bibliothèque govaluate. Utilisez FeatureSource pour spécifier quelle valeur de fonctionnalité transmettre à l'expression. Si l'expression fait référence à plusieurs propriétés d'élément, omettez FeatureSource : toutes les propriétés d'élément sont transmises automatiquement.

{
  "FeatureType": "new_feature",
  "FeatureStore": "item",
  "FeatureSource": "item:recall_name",
  "Normalizer": "expression",
  "Expression": "recall_name in ('retarget_u2i','realtime_retarget_click')",
  "FeatureName": "is_retarget"
}

Pour la syntaxe des expressions, consultez le manuel govaluate.

raw_feature

raw_feature copie une fonctionnalité existante sous un nouveau nom. Définissez RemoveFeatureSource sur true pour supprimer l'original après la copie.

L'exemple suivant renomme la fonctionnalité age de l'utilisateur en age_v2 :

{
  "FeatureType": "raw_feature",
  "FeatureStore": "user",
  "FeatureSource": "user:age",
  "RemoveFeatureSource": true,
  "FeatureName": "age_v2"
}

Utilisez le préfixe user: pour les fonctionnalités côté utilisateur et le préfixe item: pour les fonctionnalités côté élément dans FeatureSource.

compose_feature

compose_feature joint plusieurs valeurs de fonctionnalités avec un trait de soulignement (_) pour créer une fonctionnalité composite.

L'exemple suivant crée item_author en joignant user:category et item:author. Si user:category vaut category1 et item:author vaut author1, le résultat est category1_author1 :

{
  "FeatureType": "compose_feature",
  "FeatureStore": "item",
  "FeatureSource": "user:category,item:author",
  "FeatureName": "item_author"
}
La méthode expr pour new_feature offre une alternative plus flexible pour construire des fonctionnalités composites.

Fonctions d'expression intégrées

Les fonctions suivantes sont disponibles dans les expressions expression et expr.

Fonctions de chaîne

Fonction Signature Description Exemple
getString getString(a, b) Renvoie a si non vide ; sinon renvoie b. getString(user.city, "unknown")
trim trim(str, cutset) Supprime tous les caractères de début et de fin présents dans cutset de str. trim(" hello ", " ") renvoie "hello"
trimPrefix trimPrefix(str, cutset) Supprime les caractères de début présents dans cutset de str. trimPrefix("UF_uid", "UF_") renvoie "uid"
replace replace(str, old, new) Remplace toutes les occurrences de old par new dans str. replace("a-b-c", "-", "_") renvoie "a_b_c"

Fonctions mathématiques

Fonction Signature Description Exemple
round round(number) Arrondit à l'entier le plus proche. round(123.5) renvoie 124.0
round round(number, places) Tronque au nombre de décimales spécifié. round(123.456, 2) renvoie 123.45
hash32 hash32(str) Calcule un hachage 32 bits en utilisant murmur3.Sum32. hash32(item.id)
log log(number) Logarithme naturel (base e). log(2.718)
log10 log10(number) Logarithme décimal (base 10). log10(100) renvoie 2.0
log2 log2(number) Logarithme binaire (base 2). log2(8) renvoie 3.0
pow pow(base, exponent) Élève base à la puissance exponent. pow(2, 10) renvoie 1024.0

Fonctions géospatiales

Fonction Signature Description
s2CellID s2CellID(lat, lng)s2CellID(lat, lng, level) Renvoie l'ID de cellule S2 (int) pour les coordonnées données. level contrôle la précision (plus élevé = cellule plus petite). Niveau par défaut : 15.
s2CellNeighbors s2CellNeighbors(lat, lng)s2CellNeighbors(lat, lng, level) Renvoie une liste d'ID de cellules S2 ([]int) pour les coordonnées données et les 8 cellules adjacentes — soit 9 ID au total.
geoHash geoHash(lat, lng)geoHash(lat, lng, precision) Encode les coordonnées sous forme de chaîne Geohash. Précision par défaut : 6.
geoHashWithNeighbors geoHashWithNeighbors(lat, lng)geoHashWithNeighbors(lat, lng, precision) Renvoie les chaînes Geohash pour les coordonnées données et les 8 zones adjacentes — soit 9 chaînes au total.
haversine haversine(lng1, lat1, lng2, lat2) Calcule la distance sphérique entre deux points en utilisant la formule de Haversine. Renvoie float64 en kilomètres.
sphereDistance sphereDistance(lng1, lat1, lng2, lat2) Calcule la distance sphérique entre deux points en utilisant la loi des cosinus sphériques. Renvoie float64 en kilomètres.