JDONREFv4 Query : Différence entre versions
(→Filtres : filtre sur la géométrie) |
(notation) |
||
Ligne 62 : | Ligne 62 : | ||
75 BD DE L HOPITAL 75013 PARIS (le numéro de voie 75) |
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) |
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 : |
||
+ | - mettre en avant les résultats les plus pertinents |
||
+ | - 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). |
||
+ | {| border="1" |
||
+ | | '''é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 : |
||
+ | - 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. |
||
+ | - 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===== |
=====Exemples===== |
||
Ligne 116 : | Ligne 147 : | ||
Par exemple : |
Par exemple : |
||
− | Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de |
+ | 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 à 17:59
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 :
- mettre en avant les résultats les plus pertinents - 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 :
- 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. - 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 :
Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le mot clé "FRANCE".