FacetSpec

Spécification d'attribut permettant d'effectuer une recherche par attributs.

Représentation JSON
{
  "facetKey": {
    object (FacetKey)
  },
  "limit": integer,
  "excludedFilterKeys": [
    string
  ],
  "enableDynamicPosition": boolean
}
Champs
facetKey

object (FacetKey)

Obligatoire. Spécification de la clé d'attribut.

limit

integer

Nombre maximal de valeurs d'attribut renvoyées pour cet attribut. Si aucune valeur n'est spécifiée, la valeur par défaut est 20. La valeur maximale autorisée est 300. Les valeurs supérieures à 300 sont réduites à 300. Pour l'agrégation dans la recherche médicale, lorsque [FacetKey.key] est "healthcare_aggregation_key", la limite est remplacée en interne par 10 000, quelle que soit la valeur définie ici.

Si ce champ est négatif, une erreur INVALID_ARGUMENT est renvoyée.

excludedFilterKeys[]

string

Liste des clés à exclure lors de la création d'attributs.

Par défaut, FacetKey.key n'est pas exclu du filtre, sauf s'il est répertorié dans ce champ.

Si une clé d'attribut est répertoriée dans ce champ, ses valeurs peuvent apparaître comme résultats d'attributs, même si elles sont filtrées des résultats de recherche. L'utilisation de ce champ n'a aucune incidence sur les résultats de recherche renvoyés.

Supposons, par exemple, qu'il existe 100 documents avec l'attribut de couleur "Rouge" et 200 documents avec l'attribut de couleur "Bleu". Par défaut, une requête contenant le filtre "color:ANY("Red")" et ayant "color" comme FacetKey.key ne renvoie que les documents "Rouge" dans les résultats de recherche, ainsi que "Rouge" avec le nombre 100 comme seul attribut de couleur. Bien que des documents bleus soient également disponibles, "Bleu" ne s'affiche pas comme valeur d'attribut disponible.

Si "color" est répertorié dans "excludedFilterKeys", la requête renvoie les valeurs d'attribut "Rouge" avec le nombre 100 et "Bleu" avec le nombre 200, car la clé "color" est désormais exclue du filtre. Comme ce champ n'a aucune incidence sur les résultats de recherche, ces derniers sont toujours correctement filtrés pour ne renvoyer que les documents "Rouge".

Un maximum de 100 valeurs est autorisé. Dans le cas contraire, une erreur INVALID_ARGUMENT est renvoyée.

enableDynamicPosition

boolean

Active la position dynamique pour cet attribut. Si la valeur est "true", la position de cet attribut parmi tous les attributs de la réponse est déterminée automatiquement. Si les attributs dynamiques sont activés, ils sont classés ensemble. Si la valeur est "false", la position de cet attribut dans la réponse est la même que dans la requête, et il est classé avant les attributs dont la position dynamique est activée et tous les attributs dynamiques.

Par exemple, vous pouvez toujours vouloir que l'attribut de note soit renvoyé dans la réponse, mais il n'est pas forcément nécessaire de l'afficher en haut. Dans ce cas, vous pouvez définir enableDynamicPosition sur "true" pour que la position de l'attribut de note dans la réponse soit déterminée automatiquement.

Autre exemple : supposons que vous ayez les attributs suivants dans la requête :

  • "rating", enableDynamicPosition = true

  • "price", enableDynamicPosition = false

  • "brands", enableDynamicPosition = false

Vous avez également activé des attributs dynamiques, ce qui génère un attribut gender. L'ordre final des attributs dans la réponse peut alors être ("price", "brands", "rating", "gender") ou ("price", "brands", "gender", "rating"), selon la façon dont l'API ordonne les attributs "gender" et "rating". Notez toutefois que "price" et "brands" sont toujours classés en première et deuxième position, car leur enableDynamicPosition est "false".

FacetKey

Spécifie le mode de calcul d'un attribut.

Représentation JSON
{
  "key": string,
  "intervals": [
    {
      object (Interval)
    }
  ],
  "restrictedValues": [
    string
  ],
  "prefixes": [
    string
  ],
  "contains": [
    string
  ],
  "caseInsensitive": boolean,
  "orderBy": string
}
Champs
key

string

Obligatoire. Clés d'attribut textuelles et numériques acceptées dans l'objet Document, sur lesquelles les valeurs d'attribut sont calculées. La clé d'attribut est sensible à la casse.

intervals[]

object (Interval)

Ne définir que si les valeurs doivent être regroupées en intervalles. Doit être défini pour les attributs avec des valeurs numériques. Ne doit pas être défini pour les attributs avec des valeurs de texte. Le nombre maximal d'intervalles est de 30.

restrictedValues[]

string

N'obtenir l'attribut que pour les valeurs restreintes données. Uniquement compatible avec les champs textuels. Supposons, par exemple, que "category" comporte trois valeurs : "Action > 2022", "Action > 2021" et "Sci-Fi > 2022". Si "restrictedValues" est défini sur "Action > 2022", l'attribut "category" ne contient que "Action > 2022". Uniquement compatible avec les champs textuels. Le maximum est de 10.

prefixes[]

string

N'obtenir que les valeurs d'attribut qui commencent par le préfixe de chaîne donné. Supposons, par exemple, que "category" comporte trois valeurs : "Action > 2022", "Action > 2021" et "Sci-Fi > 2022". Si "prefixes" est défini sur "Action", l'attribut "category" ne contient que "Action > 2022" et "Action > 2021". Uniquement compatible avec les champs textuels. Le maximum est de 10.

contains[]

string

N'obtenir que les valeurs d'attribut qui contiennent les chaînes données. Supposons, par exemple, que "category" comporte trois valeurs : "Action > 2022", "Action > 2021" et "Sci-Fi > 2022". Si "contains" est défini sur "2022", l'attribut "category" ne contient que "Action > 2022" et "Sci-Fi > 2022". Uniquement compatible avec les champs textuels. Le maximum est de 10.

caseInsensitive

boolean

La valeur est "true" pour rendre les clés d'attribut insensibles à la casse lors de l'obtention de valeurs d'attribut avec des préfixes ou des contenus, et "false" dans le cas contraire.

orderBy

string

Ordre dans lequel les documents sont renvoyés.

Les valeurs autorisées sont les suivantes :

Si aucune valeur n'est définie, les valeurs textuelles sont triées dans l'ordre naturel, et les intervalles numériques sont triés dans l'ordre indiqué par FacetSpec.FacetKey.intervals.