JDONREFv4 Query : Différence entre versions

De JDONREF Wiki
(Notation)
(Effets de bord)
Ligne 147 : Ligne 147 :
   
 
Par exemple :
 
Par exemple :
Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le mot clé "FRANCE".
+
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le mot clé "FRANCE".

Version du 23 juin 2014 à 19:03

La requête jdonrefv3es du plugin éponyme permet de chercher efficacement des adresses correspondant aux types de JDONREFv3.

 {
   "query": {
     "jdonrefv3es" : {
        "value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
     }
   }
 }

Les résultats de la requête dépendent de la configuration du plugin.

Filtres

Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :

 {
   "filtered" : {
     "query": {
       "jdonrefv3es" : {
         "value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
       }
     },
     "filter": {
       "term" : { "departement" : "75" }
     }
   }
 }

Ou de restreindre la recherche à une zone géographique :

 {
   "filtered" : {
     "query": {
       "jdonrefv3es" : {
         "value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
       }
     },
     "filter" : {
       "geo_shape": {
          "geometrie" : {
            "shape" : {
               "type" : "enveloppe",
               "coordinates": [[13,53],[14,52]]
            }
          }
       }
     }
   }
 }
Principe

ElasticSearch étant un moteur d'indexation à plat, il ne fait pas nativement de distinction entre les termes qu'il indexe.

Toutefois, dans une adresse, les éléments qui la compose peuvent avoir une importance très différente dans l'adresse.

Par exemple concernant la requête :

 57 BD DE L HOPITAL 75 PARIS

A la saisie de cette adresse, on ne s'attendrait pas à retrouver des résultats tels que :

 75 BD DE L HOPITAL 75013 PARIS (le numéro de voie 75)
 75 rue de paris 57 L HOPITAL (la ville l'hopital en moselle, la voie n'existe pas il s'agit d'un exemple)

Pour mettre en avant les résultats les plus pertinents, ElasticSearch s'appuie sur le moteur lucene qui attribue une note à chaque résultat. JDONREFv3ES surcharge ce système de notation.

Notation

Le système de notation mis en oeuvre par JDONREFv3ES a plusieurs objectifs :

  1. mettre en avant les résultats les plus pertinents
  2. disposer d'une notation absolue, permettant à un ordinateur d'effectuer un choix objectif parmi les propositions de résultats

L'algorithme de notation reprend celui de JDONREFv2 et JDONREFv3. A chaque élément de l'adresse est attribué un poids. Il s'agit donc d'une note pondérée. Il est (sera) possible de modifier cette pondération et de choisir les éléments qui participent à cette notation.

Pour le moment, les pondérations et les éléments pris en compte sont présentés dans le tableau ci-dessous. La pondération est à considérer relativement à la somme des éléments concernés par l'adresse (voir exemples plus bas).

éléments pondération
ligne4 50 par mots trouvés divisé par le nombre de mots total
code postal / code insee / code departement / code arrondissement 50
commune 50 par mots trouvés divisé par le nombre de mots total

Deux malus différents sont ensuite appliqués à la somme totale :

  1. si l'ordre des termes appartenant à un élément ne sont pas consécutifs. La valeur par défaut est de 0.5 pour chaque terme discordant. C'est très pénalisant.
  2. si le numéro d'adresse n'est pas présent dans l'adresse saisie. La valeur par défaut est de 0. Les résultats disposant d'un numéro d'adresse ne sont donc pas retournés (le nombre de faux positif est trop important).
Exemples

A cet effet, le comportement recherché par cette requête est le suivant :

requête meilleur résultat détail
"130 [RUE] [REMY] [DUHEM]" [59500] [DOUAI] [FRANCE] le numéro 130 de la rue Rémy Duhem à Douai Au moins l'un des éléments de la voie côte à côte,
et un élément de la commune, quelque soit l'ordre.
"130 [RUE] [REMY] [DUHEM]" [59] [DOUAI] [FRANCE] le numéro 130 de la rue Rémy Duhem à Douai Au moins l'un des éléments de la voie côte à côte,
et un élément de la commune, quelque soit l'ordre.
Résultat garanti suivant existence d'une voie similaire
(ou d'une commune similaire)
dans le département ou le pays (voire au delà), quelque soit l'ordre.
"[RUE] [REMY] [DUHEM]" [59500] [DOUAI] [FRANCE] la rue Rémy Duhem à DOUAI Au moins l'un des éléments de la voie côte à côte,
et un élément de la commune, quelque soit l'ordre.
"[RUE] [REMY] [DUHEM]" [59] [DOUAI] [FRANCE] la rue Rémy Duhem à DOUAI Au moins l'un des éléments de la voie côte à côte,
et un élément de la commune, quelque soit l'ordre.
Résultat garanti suivant existence d'une voie similaire
(ou d'une commune similaire)
dans le département ou le pays (voire au delà), quelque soit l'ordre.
[59500] [DOUAI] [FRANCE] la ville de DOUAI L'un, l'autre, ou les deux
59505 [DOUAI] [FRANCE] la ville de DOUAI Avec une erreur sur le code postal
[59] DOUAI [FRANCE] la ville de DOUAI Quelque soit l'ordre
59 [FRANCE] le département 59 Quelque soit l'ordre
FRANCE Le pays FRANCE

Tout en tenant compte des synonymes et de la phonétique bien sûr ...

Effets de bord

Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.

Par exemple :

  1. Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le mot clé "FRANCE".