JDONREFv4 Query : Différence entre versions

De JDONREF Wiki
(Principe)
(Filtres : filtre sur la géométrie)
Ligne 31 : Ligne 31 :
   
 
{
 
{
"bool" : {
+
"filtered" : {
"must" : [
+
"query": {
"jdonrefv3es" : {
+
"jdonrefv3es" : {
"value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
+
"value" : "24 BOULEVARD DE L HOPITAL 75 PARIS"
},
+
}
"query" : {
+
},
"geo_shape": {
+
"filter" : {
"geometrie" : {
+
"geo_shape": {
"shape" : {
+
"geometrie" : {
"type" : "enveloppe",
+
"shape" : {
"coordinates": [[13,53],[14,52]]
+
"type" : "enveloppe",
}
+
"coordinates": [[13,53],[14,52]]
}
+
}
}
 
 
}
 
}
]
+
}
  +
}
 
}
 
}
 
}
 
}

Version du 27 avril 2014 à 17:28

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)
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 :

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