Paramètres de recherche

Contenu HTTP

LE contenu de l’appel d’un web-service de recherche doit être un json de recherche contenant les deux propriétés operation et filtes.

Propriété operation

La propriété operation ne peut prendre que les deux valeurs suivantes:

  • INTERSECTION : les objets retournés vérifient l’ensemble des conditions;

  • UNION : les objets retournés vérifient une des conditions.

Propriété filtres

La propriété filtre est une liste non vide d’objets Filtre ou SousFiltre.

Objet Filtre

L’objet Filtre contient les attributs suivants:

Attribut

Type

Description

O/F

filtre

str

attribut de l’objet à filter

O

valeur

mixed

valeur simple ou tableau de valeurs

O

inverse

bool

inverse le filtre

F

strict

bool

recheche strict ou flou

F

Objet SousFiltre

Un objet SousFiltre permet de combiner un filtre principal avec un ou plusieurs filtres secondaires.

Les sous-filtres ne concerne que les rôles des entités.

Dans l’exemple suivant,

{
  "operation": "INTERSECTION",
  "filtres": [
    {
      "filtre": "RolContactSiteHydro",
      "sousfiltres": [
         {"CdSiteHydro": "F"},
         {"RoleContactSiteHydro": "ADM"}
      ]
    }
  ]
}

le web-service de recherche de contributeurs va retourner les contact ayant des rôles ADM sur des sites hydro dont le code commence par la lettre F.

Attribut valeur

Valeur simple

La valeur du filtre peut être une chaîne de caractères, un entier, un flottant un booléen ou un tableau de valeur. L’attribut peut prendre la valeur nulle (null).

Tableau de valeurs

En fournissant un tableau de valeurs, l’opérateur de recherche est « un parmi ». Le web-service retournera les objets dont la propriété correspond à une des valeurs du tableau.

Opérateurs SQL de recherche

Type de paramètre

strict

opérateur

Commentaire

Texte

false

~*

Recherche par expression régulière insensible à la casse

Texte

true

ilike

Recherche strict insensible à la casse

Code d’entité

ilike param %

Commence par

Date

>=

CdContact, Cdintervenant

=

Attribut inverse

L’attribut inverse est un booléen qui peut prendre la valeur true ou false.

Lorsque inverse est égale true, cela inverse le filtre.

On peut utiliser deux fois la même balise pour réaliser des recherches entre deux bornes min et max.

En utilisant les deux filtres ci-dessous, on pourra récupérer les sites situés entre 50 et 100 mètres d’altitude.

{
  "operation": "INTERSECTION",
  "filtres": [
    {
      "filtre": "AltitudeSiteHydro",
      "valeur": 50,
      "inverse": false
    },
    {
      "filtre": "AltitudeSiteHydro",
      "valeur": 100,
      "inverse": true
    },
  ]
}

Attribut strict

L’attribut strict est un booléen qui peut prendre la valeur true ou false.

Lorsque l’attribut prend la valeur true, une rechercher floue est réalisé permettant de trouver des motifs à partir de texte mal orthographié.

Exemple de substitution:

Texte

Recherche floue

Seine

((s+)|ç)(e|é|è|ê)(i|î|ï)(n+)(e|é|è|ê)

Garonne

(g|(gu))(a|à|â)(r+)(o|ô)(n+)(e|é|è|ê)

Loire

(l+)(o|ô)(i|î|ï)(r+)(e|é|è|ê)

L’attribut strict ne concerne que les chaînes de caractères. Il ne s’applique pas aux entiers, flottants, booléens, dates et codes.

Recherche de valeurs non définies

Le web-service permet de filtrer sur des attributs non définis avec l’attribut valeur d’un objet filtre défini à null.

{
  "operation": "INTERSECTION",
  "filtres": [
    {
      "filtre": "AltitudeSiteHydro",
      "valeur": null,
      "inverse": false
    }
  ]
}

Dans l’exemple ci-dessous le web-service renverra les sites pour lesquels l’altitude n’est pas définie.

Enfin il est possible de filtrer entre deux valeurs et en retournant aussi les entités pour lesquelles la valeur n’a pas été définie :

{
  "operation": "INTERSECTION",
  "filtres": [
    {
      "filtre": "AltitudeSiteHydro",
      "valeur": [50, null],
      "inverse": false
    },
    {
      "filtre": "AltitudeSiteHydro",
      "valeur": 100,
      "inverse": true
    },
  ]
}

L’exemple ci-dessus retournera les sites pour lesquels l’altitude n’a pas été définie ou comprise entre 100 et 1000 mètres.