Spécification d'API REST de contraintes de recherche

Les contraintes font partie de l'API de recherche. Elles fournissent une méthode structurée pour la recherche avancée sur des métadonnées de document. Elles limitent les résultats de recherche à ceux correspondant à des valeurs de métadonnées spécifiques. Il s'agit d'une alternative aux applications côté client qui incluent des filtres et des options de recherche avancée.

Plutôt que de concaténer des valeurs dans le paramètre de requête avec une syntaxe de requête spécifique, une application peut transmettre les valeurs sous forme de paramètres distincts, quelle que soit la syntaxe de requête. Le paramètre de contrainte peut être transmis plusieurs fois dans une demande d'API de recherche pour indiquer plusieurs contraintes. Le paramètre de contrainte est facultatif dans l'API de recherche. Les contraintes sont obligatoires. En d'autres termes, chaque résultat de recherche doit satisfaire toutes les contraintes fournies dans la demande. Si un paramètre de requête est fourni, tous les résultats de recherche doivent correspondre à la requête et aux contraintes. Les contraintes sont classées selon trois types de base : field, category et range. Chaque contrainte peut s'appliquer à une ou plusieurs valeurs. La valeur du paramètre de contrainte est une chaîne JSON. La section suivante présente les détails de la syntaxe des différents types de contrainte.

Contrainte de zone

Une contrainte de zone autorise uniquement les résultats correspondant à des valeurs de zone spécifiques.

Syntaxe : contrainte=type : field, id : field_id, values : [fieldValue1,fieldValue2]

Paramètres :

Chemin de contexte Authentification
type Toujours équivalent à field pour ce type de contrainte.
id Identificateur de la zone indexée.
values Tableau de valeurs de zone. Chaque résultat de recherche doit correspondre à au moins une des valeurs.

Exemple : contrainte=type :field, id :title, values :[test]

Contrainte de catégorie

Une contrainte de catégorie fait référence à une contrainte sur une catégorie spécifique d'une Facette. Une contrainte de catégorie est similaire à une contrainte de zone pour ce qui est de sa syntaxe. Cependant, les catégories étant indexées différemment des zones ordinaires, la contrainte de catégorie est déclarée en tant que type spécial de contrainte pour permettre une meilleure gestion de la demande. Les contraintes de catégorie sont toujours une correspondance exacte.

Syntaxe : contrainte=type : category, values : [root/a/x, root/a/y]

Paramètres :

Chemin de contexte Authentification
type Toujours équivalent à category pour ce type de contrainte.
values Tableau d'ID catégorie. Chaque résultat de recherche doit correspondre à au moins une des catégories.
Exemples :
  • Contrainte=type : category, values :[Tag/tag1]
  • Contrainte=type : category, values :[Tag/tag1,Tag/tag2]
  • Contrainte=type : category, values :[Source/forums,Source/profiles,Source/wikis,Source/status_updates]
  • Contrainte=type : category, values :[Tag/tag1]}
  • Contrainte=type : category, values :[Tag/tag2]

Contrainte de plage

Une contrainte de plage autorise uniquement les résultats sur une plage spécifiques de valeurs de zone. Les valeurs peuvent être des chaînes ou des nombres.

Syntaxe numérique : contrainte=type : range, id : field_id, values : [{ge: 0.1, le: 0.5}, {g: 3.6}, {l: -5}]

Syntaxe de la chaîne : contrainte=type : range, id : field_id, values : [{ge: cat, le: dog}, {g: horse}, {l: animal}]

Paramètres :

Chemin de contexte Authentification
type Toujours équivalent à range pour ce type de contrainte.
id Identificateur de la zone indexée.
values
Tableau de valeurs de plage. Chaque valeur se compose de limites supérieure et inférieure. Chaque limite peut être inclusive ou exclusive. Une ou plusieurs limites peuvent être spécifiées pour chaque valeur. Attributs autorisés :
  • gepour la limite inclusive inférieure.

  • gpour la limite exclusive inférieure.

  • lepour la limite inclusive supérieure.

  • lpour la limite exclusive supérieure.