<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/api.php?action=feedcontributions&amp;amp;feedformat=atom&amp;amp;user=Julien2512</id>
		<title>JDONREF Wiki - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/api.php?action=feedcontributions&amp;amp;feedformat=atom&amp;amp;user=Julien2512"/>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php/Sp%C3%A9cial:Contributions/Julien2512"/>
		<updated>2026-04-21T09:48:59Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.27.4</generator>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=514</id>
		<title>JDONREFv4 Plugin BeginnersMode</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=514"/>
				<updated>2016-02-26T23:10:27Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Prérequis */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.&lt;br /&gt;
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].&lt;br /&gt;
&lt;br /&gt;
Des compétences d'administration système sont tout de même nécessaires pour certaines opérations.&lt;br /&gt;
&lt;br /&gt;
==== Prérequis ====&lt;br /&gt;
&lt;br /&gt;
* une ou plusieurs machines (virtuelles) sur le même réseau avec un minimum de :&lt;br /&gt;
** deux coeurs&lt;br /&gt;
** 8 à 64 Go de RAM (pas plus par machine)&lt;br /&gt;
** 20 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)&lt;br /&gt;
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).&lt;br /&gt;
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]&lt;br /&gt;
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous ne vous en sortez pas, vous nécessitez sans doute un administrateur système. Inutile d'aller plus loin.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Sur chacune de vos machines :&lt;br /&gt;
&lt;br /&gt;
  cd /usr/share/elasticsearch&lt;br /&gt;
  bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw &lt;br /&gt;
&lt;br /&gt;
puis sur l'une d'elles :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est ensuite possible d'indexer du contenu, comme une commune :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{&lt;br /&gt;
    &amp;quot;code_insee&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75000&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot; : &amp;quot;commune&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
ou une voie :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{&lt;br /&gt;
    &amp;quot;numero_min&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;numero_max&amp;quot;: &amp;quot;192&amp;quot;,&lt;br /&gt;
    &amp;quot;type_de_voie&amp;quot;: &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
    &amp;quot;article&amp;quot;: &amp;quot;DE&amp;quot;,&lt;br /&gt;
    &amp;quot;voie&amp;quot;: &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee_commune&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75013&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee&amp;quot;: &amp;quot;75113&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;FR1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne4&amp;quot; : &amp;quot;BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne6&amp;quot; : &amp;quot;75013 PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;voie&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
puis de tenter de les rechercher :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.5/JDONREFv4Test.html'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi indexer des données en masse :&lt;br /&gt;
&lt;br /&gt;
  Le fichier simplebulksample.json n'est pas encore disponible, les données de l'IGN sont en opendata, mais je n'ai pas pris le temps d'effectuer ce traitement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/simplebulksample.json&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;24 BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
==== Amusez-vous ====&lt;br /&gt;
&lt;br /&gt;
A ce stade, vous pouvez indexer ce qu'il vous plaît, en remplaçant le fichier simplebulksample.json par exemple !&lt;br /&gt;
Commencez par vider l'index :&lt;br /&gt;
&lt;br /&gt;
  curl -XDELETE 'http://localhost:9200/jdonref/_query' -d '{&amp;quot;query&amp;quot;:{&amp;quot;match_all&amp;quot;:{}}}'&lt;br /&gt;
&lt;br /&gt;
puis réindexez votre propre fichier.&lt;br /&gt;
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.&lt;br /&gt;
Vous pouvez suivre la [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html documentation de ElasticSearch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes les autres [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html#query-dsl requêtes] de ElasticSearch peuvent être combinées avec celle de JDONREF. &lt;br /&gt;
Vous pouvez par exemple filtrer votre requête sur un département :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
   &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
     &amp;quot;query&amp;quot;: {&lt;br /&gt;
       &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;filter&amp;quot;: {&lt;br /&gt;
       &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
Pour en savoir plus, vous pouvez lire [[JDONREFv4_Query|cette page]] et [[JDONREFv4_Mappings|celle ci]].&lt;br /&gt;
&lt;br /&gt;
==== Passage en production ====&lt;br /&gt;
&lt;br /&gt;
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production.&lt;br /&gt;
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=513</id>
		<title>JDONREFv4 plugin GettingStarted</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=513"/>
				<updated>2016-02-26T23:10:01Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Un alias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux utilisateurs confirmés d'ElasticSearch qui souhaitent utiliser JDONREF.&lt;br /&gt;
Si des éléments vous échappent dans cette page, je vous invite à revoir la page des [[JDONREFv4_Plugin_BeginnersMode|débutants]].&lt;br /&gt;
&lt;br /&gt;
L'utilisation du plugin JDONREFv4 nécessite :&lt;br /&gt;
* de disposer d'un cluster [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch] !&lt;br /&gt;
* d'installer le [[JDONREFv4_Plugin|plugin]] JDONREFv4 (voir [[JDONREFv4_Plugin#Installation_du_plugin| ici]])&lt;br /&gt;
* de créer le ou les index nécessaires&lt;br /&gt;
* de créer les mappings&lt;br /&gt;
* puis d'indexer le contenu&lt;br /&gt;
&lt;br /&gt;
Vous êtes ensuite libre d'effectuer les recherches souhaitées ! L'API elasticsearch peut bien sûr être utilisée, mais le plugin jdonrefv4 fourni un moyen de chercher efficacement des adresses (c'est à dire avec les résultats auxquels on devrait s'attendre).&lt;br /&gt;
Cette page suppose que le cluster elasticsearch et que le plugin jdonref (et éventuelles dépendances) sont installés.&lt;br /&gt;
&lt;br /&gt;
==== Création de l'index ====&lt;br /&gt;
&lt;br /&gt;
L'index proposé est du type:&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Néanmoins, il est proposé de créer un index par type. Ce découpage est nécessaire car la requête JDONREFv4 se spécialise suivant l'index.&lt;br /&gt;
Plus précisément, il faut que l'index contienne l'un des mots-clés suivant :&lt;br /&gt;
# poizon&lt;br /&gt;
# adresse&lt;br /&gt;
# voie&lt;br /&gt;
# commune&lt;br /&gt;
# departement&lt;br /&gt;
# pays&lt;br /&gt;
Si vos données sont présentes dans un index dont le nom ne contient pas l'un de ces mots, la requête ne s'applique pas.&lt;br /&gt;
Il est aussi préférable de ne pas mélanger les types au sein de ces index (avec un nom d'index qui contiendrait le nom des deux types !). Pour des raisons de performance le type n'est pas vérifié dans la requête.&lt;br /&gt;
&lt;br /&gt;
D'une manière générale, l'effet de bord de la fréquence d'un type sur un autre n'est pas positif. Par exemple, les communes sont 36 000, mais au sein des adresses, elles sont représentées 18 000 000 de fois.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter plusieurs choses au sujet de cette configuration d'index :&lt;br /&gt;
* Par défaut, les nGram est les synonymes ne sont pas utilisés.&lt;br /&gt;
* A noter que le metaphone n'est plus utilisé pour le moment, car combiné au ngram, il introduit un trop grand nombre de faux positifs. Vous pouvez toutefois le mettre en place à votre guise.&lt;br /&gt;
* Le &amp;quot;french_keywords&amp;quot; peut être rétabli si vous notez quelques mots auxquels l'application du stemmer ne fournis pas de bons résultats.&lt;br /&gt;
&lt;br /&gt;
==== Un alias ====&lt;br /&gt;
&lt;br /&gt;
Ces remarques signifient surtout que ce plugin n'est qu'un outil. Vous pouvez l'utiliser à votre guise, modifier le fichier de configuration fourni, et adapter les analyzers à votre propre cas de figure.&lt;br /&gt;
&lt;br /&gt;
A titre d'exemple, vous souhaiterez sans doute effectuer des mises à jour de JDONREF. Si vous effectuez une mise à jour en masse de l'ensemble de vos adresses, vous aurez une interruption de service.&lt;br /&gt;
Plutôt que d'utiliser un index, elasticsearch vous propose d'utiliser un [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html alias] :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141201/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... indexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot; : &amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot; : &amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Ce qui vous permettra d'utiliser l'alias &amp;quot;jdonref&amp;quot; tout comme un index, et de réindexer sous un autre nom pour effectuer une mise à jour :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141202/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... réindexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141202&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}, {&amp;quot;remove&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien compris, il va vous falloir doubler votre DD, soit environ 20 Go pour la France entière.&lt;br /&gt;
&lt;br /&gt;
Bon. Cela dit j'avais présupposé dans l'introduction que vous étiez familiers de elasticsearch ... Vous ne m'y reprendrez plus. Passons aux choses sérieuses !&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=512</id>
		<title>JDONREFv4 plugin GettingStarted</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=512"/>
				<updated>2016-02-26T23:09:19Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Création de l'index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux utilisateurs confirmés d'ElasticSearch qui souhaitent utiliser JDONREF.&lt;br /&gt;
Si des éléments vous échappent dans cette page, je vous invite à revoir la page des [[JDONREFv4_Plugin_BeginnersMode|débutants]].&lt;br /&gt;
&lt;br /&gt;
L'utilisation du plugin JDONREFv4 nécessite :&lt;br /&gt;
* de disposer d'un cluster [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch] !&lt;br /&gt;
* d'installer le [[JDONREFv4_Plugin|plugin]] JDONREFv4 (voir [[JDONREFv4_Plugin#Installation_du_plugin| ici]])&lt;br /&gt;
* de créer le ou les index nécessaires&lt;br /&gt;
* de créer les mappings&lt;br /&gt;
* puis d'indexer le contenu&lt;br /&gt;
&lt;br /&gt;
Vous êtes ensuite libre d'effectuer les recherches souhaitées ! L'API elasticsearch peut bien sûr être utilisée, mais le plugin jdonrefv4 fourni un moyen de chercher efficacement des adresses (c'est à dire avec les résultats auxquels on devrait s'attendre).&lt;br /&gt;
Cette page suppose que le cluster elasticsearch et que le plugin jdonref (et éventuelles dépendances) sont installés.&lt;br /&gt;
&lt;br /&gt;
==== Création de l'index ====&lt;br /&gt;
&lt;br /&gt;
L'index proposé est du type:&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Néanmoins, il est proposé de créer un index par type. Ce découpage est nécessaire car la requête JDONREFv4 se spécialise suivant l'index.&lt;br /&gt;
Plus précisément, il faut que l'index contienne l'un des mots-clés suivant :&lt;br /&gt;
# poizon&lt;br /&gt;
# adresse&lt;br /&gt;
# voie&lt;br /&gt;
# commune&lt;br /&gt;
# departement&lt;br /&gt;
# pays&lt;br /&gt;
Si vos données sont présentes dans un index dont le nom ne contient pas l'un de ces mots, la requête ne s'applique pas.&lt;br /&gt;
Il est aussi préférable de ne pas mélanger les types au sein de ces index (avec un nom d'index qui contiendrait le nom des deux types !). Pour des raisons de performance le type n'est pas vérifié dans la requête.&lt;br /&gt;
&lt;br /&gt;
D'une manière générale, l'effet de bord de la fréquence d'un type sur un autre n'est pas positif. Par exemple, les communes sont 36 000, mais au sein des adresses, elles sont représentées 18 000 000 de fois.&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter plusieurs choses au sujet de cette configuration d'index :&lt;br /&gt;
* Par défaut, les nGram est les synonymes ne sont pas utilisés.&lt;br /&gt;
* A noter que le metaphone n'est plus utilisé pour le moment, car combiné au ngram, il introduit un trop grand nombre de faux positifs. Vous pouvez toutefois le mettre en place à votre guise.&lt;br /&gt;
* Le &amp;quot;french_keywords&amp;quot; peut être rétabli si vous notez quelques mots auxquels l'application du stemmer ne fournis pas de bons résultats.&lt;br /&gt;
&lt;br /&gt;
==== Un alias ====&lt;br /&gt;
&lt;br /&gt;
Ces remarques signifient surtout que ce plugin n'est qu'un outil. Vous pouvez l'utiliser à votre guise, modifier le fichier de configuration fourni, et adapter les analyzers à votre propre cas de figure.&lt;br /&gt;
&lt;br /&gt;
A titre d'exemple, vous souhaiterez sans doute effectuer des mises à jour de JDONREF. Si vous effectuez une mise à jour en masse de l'ensemble de vos adresses, vous aurez une interruption de service.&lt;br /&gt;
Plutôt que d'utiliser un index, elasticsearch vous propose d'utiliser un [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html alias] :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141201/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... indexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot; : &amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot; : &amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Ce qui vous permettra d'utiliser l'alias &amp;quot;jdonref&amp;quot; tout comme un index, et de réindexer sous un autre nom pour effectuer une mise à jour :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141202/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... réindexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141202&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}, {&amp;quot;remove&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien compris, il va vous falloir doubler votre DD, soit 200 Go pour la France entière.&lt;br /&gt;
&lt;br /&gt;
Bon. Cela dit j'avais présupposé dans l'introduction que vous étiez familiers de elasticsearch ... Vous ne m'y reprendrez plus. Passons aux choses sérieuses !&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=511</id>
		<title>JDONREFv4 plugin GettingStarted</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=511"/>
				<updated>2016-02-26T23:05:51Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Création de l'index */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux utilisateurs confirmés d'ElasticSearch qui souhaitent utiliser JDONREF.&lt;br /&gt;
Si des éléments vous échappent dans cette page, je vous invite à revoir la page des [[JDONREFv4_Plugin_BeginnersMode|débutants]].&lt;br /&gt;
&lt;br /&gt;
L'utilisation du plugin JDONREFv4 nécessite :&lt;br /&gt;
* de disposer d'un cluster [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch] !&lt;br /&gt;
* d'installer le [[JDONREFv4_Plugin|plugin]] JDONREFv4 (voir [[JDONREFv4_Plugin#Installation_du_plugin| ici]])&lt;br /&gt;
* de créer le ou les index nécessaires&lt;br /&gt;
* de créer les mappings&lt;br /&gt;
* puis d'indexer le contenu&lt;br /&gt;
&lt;br /&gt;
Vous êtes ensuite libre d'effectuer les recherches souhaitées ! L'API elasticsearch peut bien sûr être utilisée, mais le plugin jdonrefv4 fourni un moyen de chercher efficacement des adresses (c'est à dire avec les résultats auxquels on devrait s'attendre).&lt;br /&gt;
Cette page suppose que le cluster elasticsearch et que le plugin jdonref (et éventuelles dépendances) sont installés.&lt;br /&gt;
&lt;br /&gt;
==== Création de l'index ====&lt;br /&gt;
&lt;br /&gt;
L'index proposé est :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter plusieurs choses au sujet de cette configuration d'index :&lt;br /&gt;
* Par défaut, les nGram est les synonymes ne sont pas utilisés.&lt;br /&gt;
* A noter que le metaphone n'est plus utilisé pour le moment, car combiné au ngram, il introduit un trop grand nombre de faux positifs. Vous pouvez toutefois le mettre en place à votre guise.&lt;br /&gt;
* Le &amp;quot;french_keywords&amp;quot; peut être rétabli si vous notez quelques mots auxquels l'application du stemmer ne fournis pas de bons résultats.&lt;br /&gt;
&lt;br /&gt;
==== Un alias ====&lt;br /&gt;
&lt;br /&gt;
Ces remarques signifient surtout que ce plugin n'est qu'un outil. Vous pouvez l'utiliser à votre guise, modifier le fichier de configuration fourni, et adapter les analyzers à votre propre cas de figure.&lt;br /&gt;
&lt;br /&gt;
A titre d'exemple, vous souhaiterez sans doute effectuer des mises à jour de JDONREF. Si vous effectuez une mise à jour en masse de l'ensemble de vos adresses, vous aurez une interruption de service.&lt;br /&gt;
Plutôt que d'utiliser un index, elasticsearch vous propose d'utiliser un [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html alias] :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141201/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... indexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot; : &amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot; : &amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Ce qui vous permettra d'utiliser l'alias &amp;quot;jdonref&amp;quot; tout comme un index, et de réindexer sous un autre nom pour effectuer une mise à jour :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141202/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... réindexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141202&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}, {&amp;quot;remove&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien compris, il va vous falloir doubler votre DD, soit 200 Go pour la France entière.&lt;br /&gt;
&lt;br /&gt;
Bon. Cela dit j'avais présupposé dans l'introduction que vous étiez familiers de elasticsearch ... Vous ne m'y reprendrez plus. Passons aux choses sérieuses !&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=510</id>
		<title>JDONREFv4 plugin GettingStarted</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=510"/>
				<updated>2016-02-26T23:03:52Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Optimisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux utilisateurs confirmés d'ElasticSearch qui souhaitent utiliser JDONREF.&lt;br /&gt;
Si des éléments vous échappent dans cette page, je vous invite à revoir la page des [[JDONREFv4_Plugin_BeginnersMode|débutants]].&lt;br /&gt;
&lt;br /&gt;
L'utilisation du plugin JDONREFv4 nécessite :&lt;br /&gt;
* de disposer d'un cluster [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch] !&lt;br /&gt;
* d'installer le [[JDONREFv4_Plugin|plugin]] JDONREFv4 (voir [[JDONREFv4_Plugin#Installation_du_plugin| ici]])&lt;br /&gt;
* de créer le ou les index nécessaires&lt;br /&gt;
* de créer les mappings&lt;br /&gt;
* puis d'indexer le contenu&lt;br /&gt;
&lt;br /&gt;
Vous êtes ensuite libre d'effectuer les recherches souhaitées ! L'API elasticsearch peut bien sûr être utilisée, mais le plugin jdonrefv4 fourni un moyen de chercher efficacement des adresses (c'est à dire avec les résultats auxquels on devrait s'attendre).&lt;br /&gt;
Cette page suppose que le cluster elasticsearch et que le plugin jdonref (et éventuelles dépendances) sont installés.&lt;br /&gt;
&lt;br /&gt;
==== Création de l'index ====&lt;br /&gt;
&lt;br /&gt;
La version débutant de la création de l'index propose :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter plusieurs choses au sujet de cette configuration d'index :&lt;br /&gt;
* Les analyzers jdonrefv4_synonyme et jdonrefv4_nGram sont des versions améliorées des analyzers correspondant d'Elasticsearch. Si vous souhaitez utiliser des synonymes ou des nGrams avec JDONREF, ces variantes doivent être utilisées. Elles sont simplement compatibles avec les payloads.&lt;br /&gt;
* A noter que le metaphone n'est plus utilisé pour le moment, car combiné au ngram, il introduit un trop grand nombre de faux positifs. Vous pouvez toutefois le mettre en place à votre guise.&lt;br /&gt;
* Le &amp;quot;french_keywords&amp;quot; peut être rétabli si vous notez quelques mots auxquels l'application du stemmer ne fournis pas de bons résultats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le reste de cette page, cette installation est plusieurs fois remise en cause. Lisez jusqu'au bout.&lt;br /&gt;
&lt;br /&gt;
==== Un alias ====&lt;br /&gt;
&lt;br /&gt;
Ces remarques signifient surtout que ce plugin n'est qu'un outil. Vous pouvez l'utiliser à votre guise, modifier le fichier de configuration fourni, et adapter les analyzers à votre propre cas de figure.&lt;br /&gt;
&lt;br /&gt;
A titre d'exemple, vous souhaiterez sans doute effectuer des mises à jour de JDONREF. Si vous effectuez une mise à jour en masse de l'ensemble de vos adresses, vous aurez une interruption de service.&lt;br /&gt;
Plutôt que d'utiliser un index, elasticsearch vous propose d'utiliser un [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html alias] :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141201/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... indexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot; : &amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot; : &amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Ce qui vous permettra d'utiliser l'alias &amp;quot;jdonref&amp;quot; tout comme un index, et de réindexer sous un autre nom pour effectuer une mise à jour :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141202/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... réindexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141202&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}, {&amp;quot;remove&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien compris, il va vous falloir doubler votre DD, soit 200 Go pour la France entière.&lt;br /&gt;
&lt;br /&gt;
Bon. Cela dit j'avais présupposé dans l'introduction que vous étiez familiers de elasticsearch ... Vous ne m'y reprendrez plus. Passons aux choses sérieuses !&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=509</id>
		<title>JDONREFv4 plugin GettingStarted</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_plugin_GettingStarted&amp;diff=509"/>
				<updated>2016-02-26T23:03:35Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Fréquences */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux utilisateurs confirmés d'ElasticSearch qui souhaitent utiliser JDONREF.&lt;br /&gt;
Si des éléments vous échappent dans cette page, je vous invite à revoir la page des [[JDONREFv4_Plugin_BeginnersMode|débutants]].&lt;br /&gt;
&lt;br /&gt;
L'utilisation du plugin JDONREFv4 nécessite :&lt;br /&gt;
* de disposer d'un cluster [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch] !&lt;br /&gt;
* d'installer le [[JDONREFv4_Plugin|plugin]] JDONREFv4 (voir [[JDONREFv4_Plugin#Installation_du_plugin| ici]])&lt;br /&gt;
* de créer le ou les index nécessaires&lt;br /&gt;
* de créer les mappings&lt;br /&gt;
* puis d'indexer le contenu&lt;br /&gt;
&lt;br /&gt;
Vous êtes ensuite libre d'effectuer les recherches souhaitées ! L'API elasticsearch peut bien sûr être utilisée, mais le plugin jdonrefv4 fourni un moyen de chercher efficacement des adresses (c'est à dire avec les résultats auxquels on devrait s'attendre).&lt;br /&gt;
Cette page suppose que le cluster elasticsearch et que le plugin jdonref (et éventuelles dépendances) sont installés.&lt;br /&gt;
&lt;br /&gt;
==== Création de l'index ====&lt;br /&gt;
&lt;br /&gt;
La version débutant de la création de l'index propose :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
&lt;br /&gt;
Vous pouvez noter plusieurs choses au sujet de cette configuration d'index :&lt;br /&gt;
* Les analyzers jdonrefv4_synonyme et jdonrefv4_nGram sont des versions améliorées des analyzers correspondant d'Elasticsearch. Si vous souhaitez utiliser des synonymes ou des nGrams avec JDONREF, ces variantes doivent être utilisées. Elles sont simplement compatibles avec les payloads.&lt;br /&gt;
* A noter que le metaphone n'est plus utilisé pour le moment, car combiné au ngram, il introduit un trop grand nombre de faux positifs. Vous pouvez toutefois le mettre en place à votre guise.&lt;br /&gt;
* Le &amp;quot;french_keywords&amp;quot; peut être rétabli si vous notez quelques mots auxquels l'application du stemmer ne fournis pas de bons résultats.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dans le reste de cette page, cette installation est plusieurs fois remise en cause. Lisez jusqu'au bout.&lt;br /&gt;
&lt;br /&gt;
==== Un alias ====&lt;br /&gt;
&lt;br /&gt;
Ces remarques signifient surtout que ce plugin n'est qu'un outil. Vous pouvez l'utiliser à votre guise, modifier le fichier de configuration fourni, et adapter les analyzers à votre propre cas de figure.&lt;br /&gt;
&lt;br /&gt;
A titre d'exemple, vous souhaiterez sans doute effectuer des mises à jour de JDONREF. Si vous effectuez une mise à jour en masse de l'ensemble de vos adresses, vous aurez une interruption de service.&lt;br /&gt;
Plutôt que d'utiliser un index, elasticsearch vous propose d'utiliser un [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/indices-aliases.html alias] :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141201/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... indexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot; : &amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot; : &amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Ce qui vous permettra d'utiliser l'alias &amp;quot;jdonref&amp;quot; tout comme un index, et de réindexer sous un autre nom pour effectuer une mise à jour :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_20141202/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4-settings_beginner.json&lt;br /&gt;
  ... réindexation ...&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/_aliases/' -d '{ &amp;quot;actions&amp;quot; : [ {&amp;quot;add&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141202&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}, {&amp;quot;remove&amp;quot; : {&amp;quot;index&amp;quot;:&amp;quot;jdonref_20141201&amp;quot;, &amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous avez bien compris, il va vous falloir doubler votre DD, soit 200 Go pour la France entière.&lt;br /&gt;
&lt;br /&gt;
Bon. Cela dit j'avais présupposé dans l'introduction que vous étiez familiers de elasticsearch ... Vous ne m'y reprendrez plus. Passons aux choses sérieuses !&lt;br /&gt;
&lt;br /&gt;
==== Optimisation ====&lt;br /&gt;
&lt;br /&gt;
   Le reste de cette page est en cours de rédaction&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pour utiliser le paramètre maxSizePerType de la requête JDONREF, il est conseillé (obligatoire) de répartir les types sur de multiples index.&lt;br /&gt;
D'une manière générale, il est même plus que conseillé de répartir les communes, départements et pays sur un unique shard (avec des réplicats, et potentiellement sur différents index).&lt;br /&gt;
&lt;br /&gt;
A cet effet, et pour simplifier le fonctionnement de l'ensemble, il est possible d'utiliser des alias elasticsearch.&lt;br /&gt;
Un alias permet de &amp;quot;contenir&amp;quot; différent index.&lt;br /&gt;
Lorsqu'une requête est faite sur un alias, tous les index de l'alias sont requêtés (et le résultat aggrégé).&lt;br /&gt;
&lt;br /&gt;
Les index de mon cluster sont répartis ainsi (via un batch) :&lt;br /&gt;
&lt;br /&gt;
# alias jdonref&lt;br /&gt;
# index pays, 1 shard + 1 réplica&lt;br /&gt;
# index departement, 1 shard + 1 réplica&lt;br /&gt;
# index commune, 1 shard + 1 réplica&lt;br /&gt;
# index voie, 5 shards + 1 réplica&lt;br /&gt;
# index adresse, 5 shards + 1 réplica&lt;br /&gt;
# index poizon, 5 shards + 1 réplica&lt;br /&gt;
NB: Je n'indexe pas les troncons, je n'en ai pas l'usage.&lt;br /&gt;
NB: Notez que vous pourriez aussi choisir de regrouper pays, departement et commune. Il faut savoir que dans un même index, les fréquences des termes sont cumulés. Dans le même index, les communes auront donc une influence sur la fréquence des termes des pays. A vous de voir.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Cela me permet de définir maxSizePerType à 5000 (voir [[JDONREFv4_Query#Optimisation | optimisation]]), pour éviter de polluer certaines requêtes avec des résultats d'adresse superflus.&lt;br /&gt;
Bien sûr, il est nécessaire d'adapter les requêtes de création des index, des mappings, et d'ajouter la création d'un alias.&lt;br /&gt;
&lt;br /&gt;
Par exemple pour les index de pays, departement, commune, il s'agit simplement d'ajouter &amp;quot;number_of_shards&amp;quot; et &amp;quot;number_of_replicas&amp;quot;. Ici l'exemple incomplet de l'index des pays :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref_pays/' -d '{&lt;br /&gt;
     &amp;quot;index&amp;quot; : {&lt;br /&gt;
        &amp;quot;number_of_shards&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;number_of_replicas&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
            &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
                &amp;quot;jdonrefv4_index&amp;quot; : {&lt;br /&gt;
                    &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                    &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                    &amp;quot;filter&amp;quot; : [&amp;quot;delimited_payload_filter&amp;quot;, &amp;quot;lowercase&amp;quot;, &amp;quot;french_elision&amp;quot;, &amp;quot;french_stop&amp;quot;, /*/&amp;quot;french_keywords&amp;quot;,*/ &amp;quot;french_stemmer&amp;quot;,&amp;quot;jdonrefv4_synonyme&amp;quot;, &amp;quot;jdonrefv4_nGram&amp;quot;]&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;jdonrefv4_codes_index&amp;quot; : {&lt;br /&gt;
                    &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                    &amp;quot;tokenizer&amp;quot; : &amp;quot;standard&amp;quot;,&lt;br /&gt;
                    &amp;quot;filter&amp;quot; : [&amp;quot;standard&amp;quot;, &amp;quot;lowercase&amp;quot;]&lt;br /&gt;
                },&lt;br /&gt;
  ...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le mapping du pays doit bien sûr être réalisé sur l'index du pays ... &lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref_pays/pays/_mapping' -d '{&lt;br /&gt;
    &amp;quot;pays&amp;quot;: {&lt;br /&gt;
       &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
      &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
      &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                           &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                           &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                           &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                           &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                           &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                           &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                           &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                           &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                      },&lt;br /&gt;
      &amp;quot;transform&amp;quot; : {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
  }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
et enfin le pays peut être rattaché à l'alias jdonref :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPOST 'http://localhost:9200/_aliases' -d '{&lt;br /&gt;
  {&amp;quot;actions&amp;quot;:[{&amp;quot;add&amp;quot;:{&amp;quot;index&amp;quot;:&amp;quot;jdonref_pays&amp;quot;,&amp;quot;alias&amp;quot;:&amp;quot;jdonref&amp;quot;}}]}'&lt;br /&gt;
&lt;br /&gt;
Idem pour les autres types (n'oubliez pas d'ajouter des shards pour les voies, adresses et poizon).&lt;br /&gt;
&lt;br /&gt;
Vous êtes alors prêt à utiliser une requête avec maxSizePerType comme [[JDONREFv4_Query#Optimisation | ici]].&lt;br /&gt;
&lt;br /&gt;
Pour être clair, avec maxSizePerType défini à 10 000, d'après les statistiques de fréquence fournies par elasticsearch sur la base IGN 2013, les adresses composées exclusivement des 84 termes suivant nécessiteront la saisie du code postal ou du code insee (sauf 6 communes pour lesquels le code insee est trop fréquent, voir la liste).&lt;br /&gt;
Chaque terme est présenté avec sa fréquence.&lt;br /&gt;
&lt;br /&gt;
*france      18934777&lt;br /&gt;
*rue          12000419&lt;br /&gt;
*avenue    1520128&lt;br /&gt;
*saint        2726561&lt;br /&gt;
*chemin    1357589&lt;br /&gt;
*route       1289752&lt;br /&gt;
*bis           1068563&lt;br /&gt;
*mont         726556&lt;br /&gt;
*impasse   724520&lt;br /&gt;
*jean      557596&lt;br /&gt;
*boulevard    475745&lt;br /&gt;
*grand   430452&lt;br /&gt;
*chateau      409622&lt;br /&gt;
*place   399026&lt;br /&gt;
*arondi   284874&lt;br /&gt;
*pont   247505&lt;br /&gt;
*tour   223095&lt;br /&gt;
*paul   222773&lt;br /&gt;
*cour   217926&lt;br /&gt;
*moulin   215612&lt;br /&gt;
*fer   215394&lt;br /&gt;
*champ   212369&lt;br /&gt;
*ter   211768&lt;br /&gt;
*general   199648&lt;br /&gt;
*george   197359&lt;br /&gt;
*pari   194572&lt;br /&gt;
*loui   193026&lt;br /&gt;
*marti   176915&lt;br /&gt;
*mare   173454&lt;br /&gt;
*mars   168783&lt;br /&gt;
*eglis   163259&lt;br /&gt;
*bourg   162933&lt;br /&gt;
*fontain   157604&lt;br /&gt;
*petit   151460&lt;br /&gt;
*martin   148328&lt;br /&gt;
*gaul   140728&lt;br /&gt;
*marseil   132682&lt;br /&gt;
*henri   126197&lt;br /&gt;
*75056   126166&lt;br /&gt;
*toulo   124260&lt;br /&gt;
*marechal   121251&lt;br /&gt;
*13055   121706&lt;br /&gt;
*francoi   95722&lt;br /&gt;
*vileneuv   88587&lt;br /&gt;
*leclerc   86265&lt;br /&gt;
*michel   84657&lt;br /&gt;
*toulous    82922&lt;br /&gt;
*principal   79712&lt;br /&gt;
*cote   77054&lt;br /&gt;
*mauric   76601&lt;br /&gt;
*joseph   76017&lt;br /&gt;
*albert   75560&lt;br /&gt;
*rose   73350&lt;br /&gt;
*nation   72777&lt;br /&gt;
*national   70177&lt;br /&gt;
*germain   64366&lt;br /&gt;
*havr   63465&lt;br /&gt;
*33063   63202&lt;br /&gt;
*foret   62521&lt;br /&gt;
*76351   60353&lt;br /&gt;
*laure   60243&lt;br /&gt;
*verdun   60034&lt;br /&gt;
*robe   59093&lt;br /&gt;
*lauren   58637&lt;br /&gt;
*mine   58423&lt;br /&gt;
*provenc   58235&lt;br /&gt;
*claud   57540&lt;br /&gt;
*colomb   56648&lt;br /&gt;
*sabl   55834&lt;br /&gt;
*lyon   55469&lt;br /&gt;
*chatel   55437&lt;br /&gt;
*laurent   55078&lt;br /&gt;
*quai   53053&lt;br /&gt;
*44109   52810&lt;br /&gt;
*epi   52666&lt;br /&gt;
*aube   52162&lt;br /&gt;
*august   51570&lt;br /&gt;
*guy   51558&lt;br /&gt;
*parc   51553&lt;br /&gt;
*roue   51505&lt;br /&gt;
*jardin   51078&lt;br /&gt;
*gambeta   50623&lt;br /&gt;
*59350   50235&lt;br /&gt;
*roy   50131&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=508</id>
		<title>JDONREFv4 Plugin BeginnersMode</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=508"/>
				<updated>2016-02-26T23:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Tests */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.&lt;br /&gt;
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].&lt;br /&gt;
&lt;br /&gt;
Des compétences d'administration système sont tout de même nécessaires pour certaines opérations.&lt;br /&gt;
&lt;br /&gt;
==== Prérequis ====&lt;br /&gt;
&lt;br /&gt;
* une ou plusieurs machines (virtuelles) sur le même réseau avec un minimum de :&lt;br /&gt;
** deux coeurs&lt;br /&gt;
** 8 à 64 Go de RAM (pas plus par machine)&lt;br /&gt;
** 100 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)&lt;br /&gt;
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).&lt;br /&gt;
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]&lt;br /&gt;
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous ne vous en sortez pas, vous nécessitez sans doute un administrateur système. Inutile d'aller plus loin.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Sur chacune de vos machines :&lt;br /&gt;
&lt;br /&gt;
  cd /usr/share/elasticsearch&lt;br /&gt;
  bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw &lt;br /&gt;
&lt;br /&gt;
puis sur l'une d'elles :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est ensuite possible d'indexer du contenu, comme une commune :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{&lt;br /&gt;
    &amp;quot;code_insee&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75000&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot; : &amp;quot;commune&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
ou une voie :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{&lt;br /&gt;
    &amp;quot;numero_min&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;numero_max&amp;quot;: &amp;quot;192&amp;quot;,&lt;br /&gt;
    &amp;quot;type_de_voie&amp;quot;: &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
    &amp;quot;article&amp;quot;: &amp;quot;DE&amp;quot;,&lt;br /&gt;
    &amp;quot;voie&amp;quot;: &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee_commune&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75013&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee&amp;quot;: &amp;quot;75113&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;FR1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne4&amp;quot; : &amp;quot;BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne6&amp;quot; : &amp;quot;75013 PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;voie&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
puis de tenter de les rechercher :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.5/JDONREFv4Test.html'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi indexer des données en masse :&lt;br /&gt;
&lt;br /&gt;
  Le fichier simplebulksample.json n'est pas encore disponible, les données de l'IGN sont en opendata, mais je n'ai pas pris le temps d'effectuer ce traitement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/simplebulksample.json&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;24 BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
==== Amusez-vous ====&lt;br /&gt;
&lt;br /&gt;
A ce stade, vous pouvez indexer ce qu'il vous plaît, en remplaçant le fichier simplebulksample.json par exemple !&lt;br /&gt;
Commencez par vider l'index :&lt;br /&gt;
&lt;br /&gt;
  curl -XDELETE 'http://localhost:9200/jdonref/_query' -d '{&amp;quot;query&amp;quot;:{&amp;quot;match_all&amp;quot;:{}}}'&lt;br /&gt;
&lt;br /&gt;
puis réindexez votre propre fichier.&lt;br /&gt;
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.&lt;br /&gt;
Vous pouvez suivre la [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html documentation de ElasticSearch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes les autres [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html#query-dsl requêtes] de ElasticSearch peuvent être combinées avec celle de JDONREF. &lt;br /&gt;
Vous pouvez par exemple filtrer votre requête sur un département :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
   &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
     &amp;quot;query&amp;quot;: {&lt;br /&gt;
       &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;filter&amp;quot;: {&lt;br /&gt;
       &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
Pour en savoir plus, vous pouvez lire [[JDONREFv4_Query|cette page]] et [[JDONREFv4_Mappings|celle ci]].&lt;br /&gt;
&lt;br /&gt;
==== Passage en production ====&lt;br /&gt;
&lt;br /&gt;
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production.&lt;br /&gt;
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=507</id>
		<title>JDONREFv4 Plugin BeginnersMode</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=507"/>
				<updated>2016-02-26T23:00:15Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.&lt;br /&gt;
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].&lt;br /&gt;
&lt;br /&gt;
Des compétences d'administration système sont tout de même nécessaires pour certaines opérations.&lt;br /&gt;
&lt;br /&gt;
==== Prérequis ====&lt;br /&gt;
&lt;br /&gt;
* une ou plusieurs machines (virtuelles) sur le même réseau avec un minimum de :&lt;br /&gt;
** deux coeurs&lt;br /&gt;
** 8 à 64 Go de RAM (pas plus par machine)&lt;br /&gt;
** 100 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)&lt;br /&gt;
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).&lt;br /&gt;
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]&lt;br /&gt;
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous ne vous en sortez pas, vous nécessitez sans doute un administrateur système. Inutile d'aller plus loin.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Sur chacune de vos machines :&lt;br /&gt;
&lt;br /&gt;
  cd /usr/share/elasticsearch&lt;br /&gt;
  bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw &lt;br /&gt;
&lt;br /&gt;
puis sur l'une d'elles :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/poizon/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/adresse/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/voie/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/troncon/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/commune/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/departement/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/pays/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est ensuite possible d'indexer du contenu, comme une commune :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{&lt;br /&gt;
    &amp;quot;code_insee&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75000&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot; : &amp;quot;commune&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
ou une voie :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{&lt;br /&gt;
    &amp;quot;numero_min&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;numero_max&amp;quot;: &amp;quot;192&amp;quot;,&lt;br /&gt;
    &amp;quot;type_de_voie&amp;quot;: &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
    &amp;quot;article&amp;quot;: &amp;quot;DE&amp;quot;,&lt;br /&gt;
    &amp;quot;voie&amp;quot;: &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee_commune&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75013&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee&amp;quot;: &amp;quot;75113&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;FR1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne4&amp;quot; : &amp;quot;BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne6&amp;quot; : &amp;quot;75013 PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;voie&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
puis de tenter de les rechercher :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.3/JDONREFv3Test.html'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi indexer des données en masse :&lt;br /&gt;
&lt;br /&gt;
  Le fichier simplebulksample.json n'est pas encore disponible, il me faut l'accord de l'IGN pour diffuser un échantillon de leur base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/simplebulksample.json&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;24 BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
==== Amusez-vous ====&lt;br /&gt;
&lt;br /&gt;
A ce stade, vous pouvez indexer ce qu'il vous plaît, en remplaçant le fichier simplebulksample.json par exemple !&lt;br /&gt;
Commencez par vider l'index :&lt;br /&gt;
&lt;br /&gt;
  curl -XDELETE 'http://localhost:9200/jdonref/_query' -d '{&amp;quot;query&amp;quot;:{&amp;quot;match_all&amp;quot;:{}}}'&lt;br /&gt;
&lt;br /&gt;
puis réindexez votre propre fichier.&lt;br /&gt;
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.&lt;br /&gt;
Vous pouvez suivre la [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html documentation de ElasticSearch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes les autres [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html#query-dsl requêtes] de ElasticSearch peuvent être combinées avec celle de JDONREF. &lt;br /&gt;
Vous pouvez par exemple filtrer votre requête sur un département :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
   &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
     &amp;quot;query&amp;quot;: {&lt;br /&gt;
       &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;filter&amp;quot;: {&lt;br /&gt;
       &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
Pour en savoir plus, vous pouvez lire [[JDONREFv4_Query|cette page]] et [[JDONREFv4_Mappings|celle ci]].&lt;br /&gt;
&lt;br /&gt;
==== Passage en production ====&lt;br /&gt;
&lt;br /&gt;
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production.&lt;br /&gt;
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=506</id>
		<title>JDONREFv4 Plugin BeginnersMode</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin_BeginnersMode&amp;diff=506"/>
				<updated>2016-02-26T22:56:09Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Cette page est destinée aux personnes qui souhaitent installer JDONREF mais qui ne disposent pas de compétences sur ElasticSearch.&lt;br /&gt;
Les utilisateurs aguerris de ElasticSearch préféreront [[JDONREFv4_plugin_GettingStarted|cette page]].&lt;br /&gt;
&lt;br /&gt;
Des compétences d'administration système sont tout de même nécessaires pour certaines opérations.&lt;br /&gt;
&lt;br /&gt;
==== Prérequis ====&lt;br /&gt;
&lt;br /&gt;
* une ou plusieurs machines (virtuelles) sur le même réseau avec un minimum de :&lt;br /&gt;
** deux coeurs&lt;br /&gt;
** 8 à 64 Go de RAM (pas plus par machine)&lt;br /&gt;
** 100 Go DD pour indexer la France entière (éventuellement réparti sur vos différentes machines)&lt;br /&gt;
* installer java (7 de [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/_java_virtual_machine.html préférence]).&lt;br /&gt;
* installer [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/setup.html elasticsearch]&lt;br /&gt;
* paramétrer correctement l'usage de la [http://www.elasticsearch.org/guide/en/elasticsearch/guide/current/heap-sizing.html#heap-sizing mémoire]. Le tas (heap) ElasticSearch doit représenter 50% de votre RAM. Par défaut, vous serez restreint à 1 Go de RAM, ce qui reste toutefois valable pour de simples tests (mais dommage si vous en avez 8 Go ou plus !). Il y a plusieurs moyens de procéder. Le plus simple est de définir la variable ES_HEAP_SIZE à la moitié de la RAM de votre noeud, mais vous devrez le faire à chaque redémarrage ('export ES_HEAP_SIZE=4G' si vous disposez de 8 Go de RAM).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si vous ne vous en sortez pas, vous nécessitez sans doute un administrateur système. Inutile d'aller plus loin.&lt;br /&gt;
&lt;br /&gt;
==== Installation ====&lt;br /&gt;
&lt;br /&gt;
Sur chacune de vos machines :&lt;br /&gt;
&lt;br /&gt;
  cd /usr/share/elasticsearch&lt;br /&gt;
  bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw &lt;br /&gt;
&lt;br /&gt;
puis sur l'une d'elles :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/jdonrefv4-settings.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-poizon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-adresse-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-voie-beginner.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-troncon.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-commune.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-departement.json&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d @/usr/share/elasticsearch/plugins/jdonrefv4-0.5/mapping-pays.json&lt;br /&gt;
&lt;br /&gt;
==== Tests ====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est ensuite possible d'indexer du contenu, comme une commune :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/commune/1' -d '{&lt;br /&gt;
    &amp;quot;code_insee&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75000&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot; : &amp;quot;commune&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
ou une voie :&lt;br /&gt;
&lt;br /&gt;
  curl -XPUT 'http://localhost:9200/jdonref/voie/1' -d '{&lt;br /&gt;
    &amp;quot;numero_min&amp;quot;: &amp;quot;1&amp;quot;,&lt;br /&gt;
    &amp;quot;numero_max&amp;quot;: &amp;quot;192&amp;quot;,&lt;br /&gt;
    &amp;quot;type_de_voie&amp;quot;: &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
    &amp;quot;article&amp;quot;: &amp;quot;DE&amp;quot;,&lt;br /&gt;
    &amp;quot;voie&amp;quot;: &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee_commune&amp;quot; : &amp;quot;75056&amp;quot;,&lt;br /&gt;
    &amp;quot;code_postal&amp;quot; : &amp;quot;75013&amp;quot;,&lt;br /&gt;
    &amp;quot;code_insee&amp;quot;: &amp;quot;75113&amp;quot;,&lt;br /&gt;
    &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot;,&lt;br /&gt;
    &amp;quot;code_pays&amp;quot; : &amp;quot;FR1&amp;quot;,&lt;br /&gt;
    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne4&amp;quot; : &amp;quot;BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne6&amp;quot; : &amp;quot;75013 PARIS&amp;quot;,&lt;br /&gt;
    &amp;quot;ligne7&amp;quot; : &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
    &amp;quot;type&amp;quot;: &amp;quot;voie&amp;quot;,&lt;br /&gt;
    &amp;quot;t0&amp;quot; : &amp;quot;22/03/2014&amp;quot;,&lt;br /&gt;
    &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
        &amp;quot;type&amp;quot;: &amp;quot;multipolygon&amp;quot;,&lt;br /&gt;
        &amp;quot;coordinates&amp;quot; : [&lt;br /&gt;
           [[102.0, 2.0], [103.0, 2.0], [103.0, 3.0], [102.0, 3.0], [102.0, 2.0]],&lt;br /&gt;
           [[100.0, 0.0], [101.0, 0.0], [101.0, 1.0], [100.0, 1.0], [100.0, 0.0]],&lt;br /&gt;
           [[100.2, 0.2], [100.8, 0.2], [100.8, 0.8], [100.2, 0.8], [100.2, 0.2]]&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
puis de tenter de les rechercher :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
ou via l'url de test 'http://localhost:9200/_plugin/jdonrefv4-0.3/JDONREFv3Test.html'&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vous pouvez aussi indexer des données en masse :&lt;br /&gt;
&lt;br /&gt;
  Le fichier simplebulksample.json n'est pas encore disponible, il me faut l'accord de l'IGN pour diffuser un échantillon de leur base.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  curl -s -XPOST 'http://localhost:9200/_bulk' --data-binary @/usr/share/elasticsearch/plugins/jdonrefv4-0.3/simplebulksample.json&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&amp;quot;query&amp;quot;:{&amp;quot;jdonrefv4&amp;quot;:{&amp;quot;value&amp;quot;:&amp;quot;24 BOULEVARD HOPITAL&amp;quot;}}}'&lt;br /&gt;
&lt;br /&gt;
==== Amusez-vous ====&lt;br /&gt;
&lt;br /&gt;
A ce stade, vous pouvez indexer ce qu'il vous plaît, en remplaçant le fichier simplebulksample.json par exemple !&lt;br /&gt;
Commencez par vider l'index :&lt;br /&gt;
&lt;br /&gt;
  curl -XDELETE 'http://localhost:9200/jdonref/_query' -d '{&amp;quot;query&amp;quot;:{&amp;quot;match_all&amp;quot;:{}}}'&lt;br /&gt;
&lt;br /&gt;
puis réindexez votre propre fichier.&lt;br /&gt;
Il n'y a pas de règle sur le poids d'un fichier bulk, mais son nombre de lignes est directement lié aux performances. Il s'agit simplement de faire quelques tests.&lt;br /&gt;
Vous pouvez suivre la [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html documentation de ElasticSearch].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Toutes les autres [http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl.html#query-dsl requêtes] de ElasticSearch peuvent être combinées avec celle de JDONREF. &lt;br /&gt;
Vous pouvez par exemple filtrer votre requête sur un département :&lt;br /&gt;
&lt;br /&gt;
  curl -XGET 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
   &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
     &amp;quot;query&amp;quot;: {&lt;br /&gt;
       &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
     },&lt;br /&gt;
     &amp;quot;filter&amp;quot;: {&lt;br /&gt;
       &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
Pour en savoir plus, vous pouvez lire [[JDONREFv4_Query|cette page]] et [[JDONREFv4_Mappings|celle ci]].&lt;br /&gt;
&lt;br /&gt;
==== Passage en production ====&lt;br /&gt;
&lt;br /&gt;
Si vous passez suffisamment de temps sur ce plugin, après quelques tests poussés vous constaterez que cette configuration ne convient pas tout à fait pour un usage en production.&lt;br /&gt;
Quelques optimisations sont nécessaires. Elles sont abordées dans la section [[JDONREFv4_plugin_GettingStarted|avancée]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=505</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=505"/>
				<updated>2016-02-26T22:46:19Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Changer de requête en cours de calcul */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
Prenons la requête&lt;br /&gt;
  numero:24 ou type_de_voie:24 ou type_de_voie:boulevard ou type_de_voie:hopital ou libelle:24 ou libelle:boulevard ou libelle:hopital&lt;br /&gt;
qui correspond à la recherche de 24 BD HOPITAL (en omettant les codes, la commune, et la répétition pour l'exemple).&lt;br /&gt;
&lt;br /&gt;
Cette requête peut retourner plusieurs catégories de résultat.&lt;br /&gt;
# des documents contenant 24                      : 300 000&lt;br /&gt;
# des documents contenant boulevard               : 600 000&lt;br /&gt;
# des documents contenant hopital                 : 250 000&lt;br /&gt;
# des documents contenant 24 boulevard            :  70 000&lt;br /&gt;
# des documents contenant 24 hopital              :  35 000&lt;br /&gt;
# des documents contenant boulevard hopital       :  80 000&lt;br /&gt;
# des documents contenant 24 boulevard hopital    :  10 000&lt;br /&gt;
&lt;br /&gt;
Il va sans dire que la catégorie la plus représentée est celle où les termes trouvés sont seuls, et la catégorie la moins représentée celle où les 3 termes sont trouvés.&lt;br /&gt;
Et pourtant, il est fort probable que le document cherché soit un de ceux où les 3 termes sont trouvés.&lt;br /&gt;
En laissant la requête telle quelle, les meilleurs résultats seront certes ceux attendus, mais au total, 1 150 000 documents auront été parcourus.&lt;br /&gt;
&lt;br /&gt;
Les 300 000 documents contenant uniquement 24 sont-ils réellement utiles ?&lt;br /&gt;
JDONREFv4 fait le postulat que non, et que parmi ces 300 000 documents, l'utilisateur ne saura pas retrouver ceux qui l'intéresse. Par contre, il est peut-être utile dans laisser quelques uns.&lt;br /&gt;
&lt;br /&gt;
L'algorithme suivi correspond ainsi à peut près à :&lt;br /&gt;
# je cherche 100 documents contenant 24 ou boulevard ou hopital&lt;br /&gt;
# puis je continue avec 100 document contenant 24 et boulevard ou 24 et hopital ou boulevard et hopital&lt;br /&gt;
# puis je continue avec 100 documents contenant 24 et boulevard et hopital&lt;br /&gt;
&lt;br /&gt;
Cela ne donne que 300 documents ? Et le votre n'est pas dedans ?&lt;br /&gt;
C'est possible. Mais les 300 documents retournés sont légitimes.&lt;br /&gt;
Si vous avez assez de temps pour fouiller dans 300 documents, je pense que vous avez aussi le temps d'attendre que la requête complète soit exécutée.&lt;br /&gt;
Nous ne parlons donc pas de la même chose.&lt;br /&gt;
&lt;br /&gt;
Il s'agit ensuite d'adapter le principe à la recherche avec faute d'orthographe et l'auto-complétion.&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête.&lt;br /&gt;
La note donnée ici est indicative.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut comme analyzer de la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut libelle, mais vous pouvez le modifier.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;libelle&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=504</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=504"/>
				<updated>2016-02-26T22:31:33Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Changer de champ pour la recherche */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête.&lt;br /&gt;
La note donnée ici est indicative.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut comme analyzer de la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut libelle, mais vous pouvez le modifier.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;libelle&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=503</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=503"/>
				<updated>2016-02-26T22:30:30Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Optimisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête.&lt;br /&gt;
La note donnée ici est indicative.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut pour la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut fullName, mais vous pouvez le modifier.&lt;br /&gt;
Attention à ce que votre champ contienne bien les payloads attendus par les checkers de la requête.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;fullName&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=502</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=502"/>
				<updated>2016-02-26T22:29:36Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Exemples de calcul en mode bulk */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête.&lt;br /&gt;
La note donnée ici est indicative.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut pour la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut fullName, mais vous pouvez le modifier.&lt;br /&gt;
Attention à ce que votre champ contienne bien les payloads attendus par les checkers de la requête.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;fullName&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Optimisation=====&lt;br /&gt;
&lt;br /&gt;
Si vous avez réparti vos types sur de multiples index (ce qui est conseillé pour les communes, pays et départements qui nécessite un sharding de 1 pour éviter les effets de bords voir [[JDONREFv4_plugin_GettingStarted#Optimisation_.28une_fois_que_vous_vous_.C3.AAtes_sortis_du_reste.29|getting started]]), le paramètre &amp;quot;maxSizePerType&amp;quot; vous permettra de filtrer les requêtes sur les adresses ou les voies qui seraient en trop grand nombre.&lt;br /&gt;
Par exemple, une requête comme&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
retourne un très grand nombre de documents sur l'ensemble des index. Dans la France entière, il y a environ 695 000 documents qui disposent du terme 'RUE'. La requête prend alors environ (sur mon environnement de test) 2 minutes de calcul, même une fois en cache. Ces performances sont liées au très grand nombre de document à parcourir et à traiter avant de retourner le résultat.&lt;br /&gt;
Toutefois, il existe des pays et des communes correspondant à ce terme, et il pourrait être utile d'obtenir ces réponses !&lt;br /&gt;
&lt;br /&gt;
Si vous avez segmenté vos types par index, la requête :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;,&lt;br /&gt;
         &amp;quot;maxSizePerType&amp;quot;: 10000&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
ne retournera pas les résultats de type &amp;quot;adresse&amp;quot;, ni même ceux de type &amp;quot;voie&amp;quot; dont la quantité est supérieure à 50000 (avec 5 shards, tout dépend de l'organisation de vos index). Seuls les pays et communes seront alors retournées, en quantité raisonnable.&lt;br /&gt;
&lt;br /&gt;
Dans une requête multi-terme, c'est la fréquence du terme le moins fréquent qui est pris en compte.&lt;br /&gt;
&lt;br /&gt;
J'insiste sur le fait que ce paramètre n'est valable que si les types sont répartis sur plusieurs index. Lorsqu'ils sont dans le même index, la requête n'est pas en mesure de faire la différence entre les types de manière efficace.&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=501</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=501"/>
				<updated>2016-02-26T22:28:47Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Modes (mode bulk - en attente de réimplémentation) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul en mode bulk=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête en mode bulk.&lt;br /&gt;
La note donnée ici est indicative, car en réalité elle s'appuie sur la fréquence des termes recherchés et trouvés, suivant la logique du moteur à indexation inverse.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut pour la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut fullName, mais vous pouvez le modifier.&lt;br /&gt;
Attention à ce que votre champ contienne bien les payloads attendus par les checkers de la requête.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;fullName&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Optimisation=====&lt;br /&gt;
&lt;br /&gt;
Si vous avez réparti vos types sur de multiples index (ce qui est conseillé pour les communes, pays et départements qui nécessite un sharding de 1 pour éviter les effets de bords voir [[JDONREFv4_plugin_GettingStarted#Optimisation_.28une_fois_que_vous_vous_.C3.AAtes_sortis_du_reste.29|getting started]]), le paramètre &amp;quot;maxSizePerType&amp;quot; vous permettra de filtrer les requêtes sur les adresses ou les voies qui seraient en trop grand nombre.&lt;br /&gt;
Par exemple, une requête comme&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
retourne un très grand nombre de documents sur l'ensemble des index. Dans la France entière, il y a environ 695 000 documents qui disposent du terme 'RUE'. La requête prend alors environ (sur mon environnement de test) 2 minutes de calcul, même une fois en cache. Ces performances sont liées au très grand nombre de document à parcourir et à traiter avant de retourner le résultat.&lt;br /&gt;
Toutefois, il existe des pays et des communes correspondant à ce terme, et il pourrait être utile d'obtenir ces réponses !&lt;br /&gt;
&lt;br /&gt;
Si vous avez segmenté vos types par index, la requête :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;,&lt;br /&gt;
         &amp;quot;maxSizePerType&amp;quot;: 10000&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
ne retournera pas les résultats de type &amp;quot;adresse&amp;quot;, ni même ceux de type &amp;quot;voie&amp;quot; dont la quantité est supérieure à 50000 (avec 5 shards, tout dépend de l'organisation de vos index). Seuls les pays et communes seront alors retournées, en quantité raisonnable.&lt;br /&gt;
&lt;br /&gt;
Dans une requête multi-terme, c'est la fréquence du terme le moins fréquent qui est pris en compte.&lt;br /&gt;
&lt;br /&gt;
J'insiste sur le fait que ce paramètre n'est valable que si les types sont répartis sur plusieurs index. Lorsqu'ils sont dans le même index, la requête n'est pas en mesure de faire la différence entre les types de manière efficace.&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=500</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=500"/>
				<updated>2016-02-26T22:28:25Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Fonctionnement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie sur un mélange de multiples sous-requêtes et de mécanismes de scoring.&lt;br /&gt;
&lt;br /&gt;
Les sous-requêtes sont constituées :&lt;br /&gt;
# de chacun des tokens saisis pour chacun des termes cherchés&lt;br /&gt;
# sont spécifique à chaque index (adresse, voie, ...)&lt;br /&gt;
# évoluent au fil de la requête. Une requête très permissive est d'abord effectuée, puis moins permissive, puis encore moins ...&lt;br /&gt;
&lt;br /&gt;
Le score est influencé par plusieurs éléments :&lt;br /&gt;
# la présence de plusieurs termes identiques&lt;br /&gt;
# l'absence de termes dans le document (notamment la repetition)&lt;br /&gt;
# divisé par le score maximum possible pour un document&lt;br /&gt;
&lt;br /&gt;
J'explique ces choix dans le détail.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch (tout comme lucene) fourni un outil manipulant des index inversés.&lt;br /&gt;
Ce qui est très efficace lorsque le scoring s'appuie sur la somme des notes associées au termes cherchés. Pour être très simplificateur, l'algorithme consiste alors à faire la somme des valeurs d'un tableau.&lt;br /&gt;
Néanmoins, un tableau de 5 000 éléments reste différent d'un tableau de 5 000 000 d'éléments, et le parcourir est généralement 1000 fois plus long.&lt;br /&gt;
Suivant la fréquence des termes, il est facile de voire passer une requête de 1ms à 1s.&lt;br /&gt;
&lt;br /&gt;
Deux principes ont alors été appliqués à notre requête :&lt;br /&gt;
# utiliser des filtres efficaces pour limiter la taille des tableaux&lt;br /&gt;
# faire évoluer la requête en cours de calcul&lt;br /&gt;
&lt;br /&gt;
=====Des filtres efficaces=====&lt;br /&gt;
&lt;br /&gt;
Le premier point est facile à comprendre. Je prends un exemple.&lt;br /&gt;
Une recherche sur une adresse n'a pas de sens si le numéro n'est pas saisi.&lt;br /&gt;
Dans le cas contraire, la recherche d'une voie serait encombrée de l'ensemble des adresses de cette voie !&lt;br /&gt;
Peut-être que quelques numéros sont pertinents, mais certainement pas tous.&lt;br /&gt;
Un exemple de filtre efficace est alors, uniquement pour les adresses, d'imposer le numéro.&lt;br /&gt;
&lt;br /&gt;
Comment imposer un numéro pour une adresse ?&lt;br /&gt;
Le meilleur endroit est au niveau du parser de la requête. A ce niveau, nous pouvons détecter l'index sur lequel la requête est en cours d'exécution et adapter la requête en conséquence.&lt;br /&gt;
Il aurait aussi été possible de modifier la requête dans la requête elle-même, au niveau de sa réécriture (rewrite). Mais quitte à être modifiée, autant la modifier le plus tôt possible.&lt;br /&gt;
Dans le code, c'est&lt;br /&gt;
  if (matchesIndices(parseContext.index().name(), &amp;quot;*adresse*&amp;quot;)&lt;br /&gt;
                &amp;amp;&amp;amp; terms.stream().filter((i)-&amp;gt;isInteger(i)).count()&amp;gt;0    // au moins un numéro dans la requête&lt;br /&gt;
                &amp;amp;&amp;amp; terms.size()&amp;gt;1)                                       // et deux éléments saisis&lt;br /&gt;
&lt;br /&gt;
Les types suivant ne sont ainsi retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 doit être présent&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact et l'éventuelle répétition exacte doivent être présent&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune parente&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====Changer de requête en cours de calcul=====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====L'influence sur le score=====&lt;br /&gt;
&lt;br /&gt;
Les filtres qui sont décrit ici n'apporte rien en terme de performances, et peuvent être potentiellement challengés si des solutions plus efficaces existent. Il s'agit uniquement de mettre les documents dans le bon ordre, ou de filtrer les résultats.&lt;br /&gt;
&lt;br /&gt;
Elasticsearch comme lucene ne permettent pas de savoir si une répétition est présente ou pas dans le document sous forme de requête.&lt;br /&gt;
En effet, la requête générée consiste à chercher les documents qui ne matchent aucun des termes présent dans l'index !&lt;br /&gt;
Ce n'est efficace que pour un nombre réduit de valeurs. Mais les répétitions sont une trentaine (les lettres plus les versions longues).&lt;br /&gt;
Le challenge, c'est de savoir identifier si la requête n'a pas matché une répétition mais que le document en a une.&lt;br /&gt;
Le type de chaque sous-requête étant connu, il est simple de faire la liste des types qui ont matché.&lt;br /&gt;
Le code suivant est alors utilisé dans le Scorer de la requête :&lt;br /&gt;
  if (((getTypeMask()&amp;amp;2)==0) &amp;amp;&amp;amp; isRepetitionInDoc(doc))&lt;br /&gt;
                this.score = 0;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Il est facile de savoir si un terme saisi n'a pas été trouvé dans le document.&lt;br /&gt;
Et d'influencer le score en conséquence. C'est fait ainsi :&lt;br /&gt;
                this.score *= ((ICountable)innerScorer).count();&lt;br /&gt;
                this.score /= this.maxCoord;&lt;br /&gt;
Mais il est plus difficile de savoir combien de termes dans le document aurait pu être trouvés pour influencer le score.&lt;br /&gt;
Par exemple, par défaut, elasticsearch (comme lucene) retourne le même score pour la recherche&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
sur les documents&lt;br /&gt;
  9 BD PALAIS&lt;br /&gt;
  9 BD PALAIS ROYAL&lt;br /&gt;
car seul les termes saisis ont une influence sur le code.&lt;br /&gt;
J'ai testé deux méthodes :&lt;br /&gt;
# associer des payloads aux termes pour fournir l'information manquante (par exemple le nombre de termes)&lt;br /&gt;
# utiliser la valeur d'un autre terme&lt;br /&gt;
La première méthode prend beaucoup de place mémoire, et ralenti le processus.&lt;br /&gt;
Les deux méthodes nécessitant un précalcul, je me suis tourné vers la deuxième, plus légère.&lt;br /&gt;
Le terme choisi est un champ &amp;quot;score&amp;quot;. Il contient le score maximal à laquelle une recherche peut aboutir pour un document.&lt;br /&gt;
Il s'agit d'un choix. Le numéro vaut 30. La répétition vaut 30. Un toke de libelle 50. etc ...&lt;br /&gt;
Pour que l'absence d'un terme dans la requête influence le score, on prend le total, on le divise par le score du document, ... et c'est tout.&lt;br /&gt;
Ainsi, si le score des documents est :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 150&lt;br /&gt;
et que la recherche aurait conduit au score :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100&lt;br /&gt;
Les résultats pour chaque document deviennent :&lt;br /&gt;
  9 BD PALAIS =&amp;gt; 100 %&lt;br /&gt;
  9 BD PALAIS ROYAL =&amp;gt; 66 %&lt;br /&gt;
et le premier document a maintenant un meilleur score.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Par défaut, elasticsearch (et lucene) privilégient les documents dans lequel le terme cherché apparaît plusieurs fois.&lt;br /&gt;
C'est très gênant pour les adresses. De nombreuses adresses disposent d'un terme présent à la fois dans le libellé et dans le nom de commune par exemple.&lt;br /&gt;
Il faudrait déjà savoir que le terme est trouvé plusieurs fois !&lt;br /&gt;
Pour chaque sous-requête est alors stocké le token correspondant. Lorsque 1 même token matche 2 sous-requête pour un même document, une défausse de point est effectué. Cela prend cette forme dans le code :&lt;br /&gt;
  this.score -= countBits(multiTokenMatch())*20;&lt;br /&gt;
&lt;br /&gt;
=====Modes (mode bulk - en attente de réimplémentation)=====&lt;br /&gt;
&lt;br /&gt;
Le mode bulk s'active simplement en utilisant le paramètre &amp;quot;mode&amp;quot; avec la valeur &amp;quot;bulk&amp;quot; de la sorte :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
         &amp;quot;mode&amp;quot;: &amp;quot;bulk&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Le paramètre mode prend deux valeurs actuellement.&lt;br /&gt;
#&amp;quot;autocomplete&amp;quot;, il s'agit du mode par défaut, le calcul de la note correspond à la somme de la note des termes trouvés&lt;br /&gt;
#&amp;quot;bulk&amp;quot;, la note de l'autocomplete est divisée par la somme des termes qui auraient pu être trouvés, rapporté sur 200.&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul en mode bulk=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête en mode bulk.&lt;br /&gt;
La note donnée ici est indicative, car en réalité elle s'appuie sur la fréquence des termes recherchés et trouvés, suivant la logique du moteur à indexation inverse.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut pour la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut fullName, mais vous pouvez le modifier.&lt;br /&gt;
Attention à ce que votre champ contienne bien les payloads attendus par les checkers de la requête.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;fullName&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Optimisation=====&lt;br /&gt;
&lt;br /&gt;
Si vous avez réparti vos types sur de multiples index (ce qui est conseillé pour les communes, pays et départements qui nécessite un sharding de 1 pour éviter les effets de bords voir [[JDONREFv4_plugin_GettingStarted#Optimisation_.28une_fois_que_vous_vous_.C3.AAtes_sortis_du_reste.29|getting started]]), le paramètre &amp;quot;maxSizePerType&amp;quot; vous permettra de filtrer les requêtes sur les adresses ou les voies qui seraient en trop grand nombre.&lt;br /&gt;
Par exemple, une requête comme&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
retourne un très grand nombre de documents sur l'ensemble des index. Dans la France entière, il y a environ 695 000 documents qui disposent du terme 'RUE'. La requête prend alors environ (sur mon environnement de test) 2 minutes de calcul, même une fois en cache. Ces performances sont liées au très grand nombre de document à parcourir et à traiter avant de retourner le résultat.&lt;br /&gt;
Toutefois, il existe des pays et des communes correspondant à ce terme, et il pourrait être utile d'obtenir ces réponses !&lt;br /&gt;
&lt;br /&gt;
Si vous avez segmenté vos types par index, la requête :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;,&lt;br /&gt;
         &amp;quot;maxSizePerType&amp;quot;: 10000&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
ne retournera pas les résultats de type &amp;quot;adresse&amp;quot;, ni même ceux de type &amp;quot;voie&amp;quot; dont la quantité est supérieure à 50000 (avec 5 shards, tout dépend de l'organisation de vos index). Seuls les pays et communes seront alors retournées, en quantité raisonnable.&lt;br /&gt;
&lt;br /&gt;
Dans une requête multi-terme, c'est la fréquence du terme le moins fréquent qui est pris en compte.&lt;br /&gt;
&lt;br /&gt;
J'insiste sur le fait que ce paramètre n'est valable que si les types sont répartis sur plusieurs index. Lorsqu'ils sont dans le même index, la requête n'est pas en mesure de faire la différence entre les types de manière efficace.&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=499</id>
		<title>JDONREFv4 Query</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Query&amp;diff=499"/>
				<updated>2016-02-26T21:22:45Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Requête et résultat */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;La requête jdonrefv4 du [[JDONREFv4_Plugin|plugin]] éponyme permet de chercher efficacement des adresses correspondant aux [[JDONREFv4_Mappings|types]] de JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
===== Requête et résultat =====&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Il s'agit d'une requête multi-termes. Ils sont décrit dans la page traitant des [[JDONREFv4_Mappings|index]].&lt;br /&gt;
&lt;br /&gt;
Avec une requête POST du type :&lt;br /&gt;
  curl -XPOST 'http://localhost:9200/jdonref/_search' -d '{&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75005 PARIS&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
le résultat est de la forme :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;_shards&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;successful&amp;quot; : 5,&lt;br /&gt;
        &amp;quot;failed&amp;quot; : 0&lt;br /&gt;
    },&lt;br /&gt;
    &amp;quot;hits&amp;quot;:{&lt;br /&gt;
        &amp;quot;total&amp;quot; : 1,&lt;br /&gt;
        &amp;quot;hits&amp;quot; : [&lt;br /&gt;
            {&lt;br /&gt;
                &amp;quot;_index&amp;quot; : &amp;quot;jdonref&amp;quot;,&lt;br /&gt;
                &amp;quot;_type&amp;quot; : &amp;quot;adresse&amp;quot;,&lt;br /&gt;
                &amp;quot;_id&amp;quot; : &amp;quot;1&amp;quot;,&lt;br /&gt;
                &amp;quot;_score&amp;quot; : 200.0,&lt;br /&gt;
                &amp;quot;_source&amp;quot; : {&lt;br /&gt;
                    &amp;quot;adr_id&amp;quot; : &amp;quot;123456789X&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_insee&amp;quot; : &amp;quot;75105&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_departement&amp;quot;: &amp;quot;75&amp;quot;,&lt;br /&gt;
                    &amp;quot;numero&amp;quot; : &amp;quot;24&amp;quot;,&lt;br /&gt;
                    &amp;quot;type_de_voie&amp;quot; : &amp;quot;BOULEVARD&amp;quot;,&lt;br /&gt;
                    &amp;quot;article&amp;quot; : &amp;quot;DE L&amp;quot;,&lt;br /&gt;
                    &amp;quot;libelle&amp;quot; : &amp;quot;HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;commune&amp;quot; : &amp;quot;PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;code_postal&amp;quot; : &amp;quot;75005&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne4&amp;quot;: &amp;quot;24 BOULEVARD DE L HOPITAL&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne6&amp;quot;: &amp;quot;75005 PARIS&amp;quot;,&lt;br /&gt;
                    &amp;quot;ligne7&amp;quot;: &amp;quot;FRANCE&amp;quot;,&lt;br /&gt;
                    &amp;quot;geometrie&amp;quot;: { &amp;quot;type&amp;quot; :&amp;quot;point&amp;quot;, &amp;quot;coordinates&amp;quot;: [123, 456] }&lt;br /&gt;
                }&lt;br /&gt;
            }&lt;br /&gt;
        ]&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Les types &amp;quot;voie&amp;quot;, &amp;quot;commune&amp;quot;, &amp;quot;departement&amp;quot;, &amp;quot;pays&amp;quot; peuvent aussi être retournés.&lt;br /&gt;
Les coordonnées sont en WGS84 par défaut dans la version 0.2, une version ultérieure permettra de le transformer à la volée en Lambert 93.&lt;br /&gt;
&lt;br /&gt;
=====Filtres=====&lt;br /&gt;
&lt;br /&gt;
Il est possible de la combiner avec des filtres, par exemple pour limiter les résultats à un département précis :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot;: {&lt;br /&gt;
        &amp;quot;term&amp;quot; : { &amp;quot;code_departement&amp;quot; : &amp;quot;75&amp;quot; }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ou de restreindre la recherche à une zone géographique :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;filtered&amp;quot; : {&lt;br /&gt;
      &amp;quot;query&amp;quot;: {&lt;br /&gt;
        &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
          &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
      },&lt;br /&gt;
      &amp;quot;filter&amp;quot; : {&lt;br /&gt;
        &amp;quot;geo_shape&amp;quot;: {&lt;br /&gt;
           &amp;quot;geometrie&amp;quot; : {&lt;br /&gt;
             &amp;quot;shape&amp;quot; : {&lt;br /&gt;
                &amp;quot;type&amp;quot; : &amp;quot;enveloppe&amp;quot;,&lt;br /&gt;
                &amp;quot;coordinates&amp;quot;: [[13,53],[14,52]]&lt;br /&gt;
             }&lt;br /&gt;
           }&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
=====Fonctionnement=====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4Query s'appuie intégralement sur la requête [[PayloadCheckerSpanQuery]] avec le paramétrage décrit ci-après.&lt;br /&gt;
Outre ce paramètrage, il découpe simplement la requête qui lui est donnée en token suivant l'analyzer de recherche du champ qui lui est donné (par défaut fullName).&lt;br /&gt;
Si vous avez suivi [[JDONREFv4_plugin_GettingStarted]] votre analyzer de recherche sera alors jdonrefv4_search.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [&lt;br /&gt;
       { &amp;quot;type&amp;quot; : &amp;quot;Grouped&amp;quot; },&lt;br /&gt;
       { &amp;quot;type&amp;quot; : &amp;quot;Switch&amp;quot;, &amp;quot;field&amp;quot;: &amp;quot;_type&amp;quot;, &amp;quot;clauses&amp;quot;: {&lt;br /&gt;
           &amp;quot;poizon&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [ // pour le poizon :&lt;br /&gt;
               { &amp;quot;type&amp;quot;: &amp;quot;Or&amp;quot; , &amp;quot;checkers&amp;quot; : [ &lt;br /&gt;
                   { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 1}, // ligne1 ou&lt;br /&gt;
                   { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 2}, // ligne4&lt;br /&gt;
                 ]&lt;br /&gt;
               },&lt;br /&gt;
               { &amp;quot;type&amp;quot; : &amp;quot;BeforeAnother&amp;quot;, &amp;quot;payloadbefore&amp;quot;: 11, &amp;quot;another&amp;quot; : 2} // et numero avant ligne4&lt;br /&gt;
             ]&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;adresse&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [  // pour les adresses :&lt;br /&gt;
               { &amp;quot;type&amp;quot; : &amp;quot;All&amp;quot;, &amp;quot;payload&amp;quot;: 11},        // numero complet&lt;br /&gt;
               { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 2},        // un élément de ligne4&lt;br /&gt;
               { &amp;quot;type&amp;quot; : &amp;quot;BeforeAnother&amp;quot;, &amp;quot;payloadbefore&amp;quot;: 11, &amp;quot;another&amp;quot; : 2} // numero avant ligne4&lt;br /&gt;
             ]&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;voie&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [  // pour les voies :&lt;br /&gt;
               { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 2},        // un élément de ligne4&lt;br /&gt;
             ]&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [  // pour les communes :&lt;br /&gt;
               { &amp;quot;type&amp;quot;: &amp;quot;Or&amp;quot; , &amp;quot;checkers&amp;quot; : [ &lt;br /&gt;
                   { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 5}, // un élément de la commune ou&lt;br /&gt;
                   { &amp;quot;type&amp;quot;: &amp;quot;Or&amp;quot; , &amp;quot;checkers&amp;quot; : [ &lt;br /&gt;
                       { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 8}, // un code département ou&lt;br /&gt;
                       { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 4}, // un code arrondissement ou&lt;br /&gt;
                       { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 3}, // un code postal ou&lt;br /&gt;
                       { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 7}, // un code insee ou&lt;br /&gt;
                       { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 6}  // un code insee de la commune ou&lt;br /&gt;
                     ]&lt;br /&gt;
                   }&lt;br /&gt;
                 ]&lt;br /&gt;
               }&lt;br /&gt;
             ]&lt;br /&gt;
           }&lt;br /&gt;
           &amp;quot;departement&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [  // pour les départements :&lt;br /&gt;
                   { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 8} // un élément du code département&lt;br /&gt;
             ]&lt;br /&gt;
           }&lt;br /&gt;
           &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot;: &amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [  // pour les départements :&lt;br /&gt;
                   { &amp;quot;type&amp;quot; : &amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : 9} // un élément de la ligne7&lt;br /&gt;
             ]&lt;br /&gt;
           }&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
    ]&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Ce qui signifie plus clairement que les types suivant ne sont retournés en résultat que lorsque les filtres spécifiés sont vérifiés :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''filtres'''&lt;br /&gt;
|-&lt;br /&gt;
 | poizon&lt;br /&gt;
 | un élément de la ligne1 ou un élément de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | adresse&lt;br /&gt;
 | le numéro exact présent devant un ou des éléments de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | voie&lt;br /&gt;
 | un élement de la ligne 4&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | un élément de la commune ou un code postal, insee, département, arrondissement voire le code insee de la commune&lt;br /&gt;
|-&lt;br /&gt;
 | departement&lt;br /&gt;
 | le code département&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | un élément de la ligne7&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Et que seuls les résultats dont les éléments sont regroupés sont retournés.&lt;br /&gt;
Par exemple, la recherche de &amp;quot;230 RUE DE L HOPITAL&amp;quot; ne retournera pas &amp;quot;230 BIS RUE DE L HOPITAL&amp;quot; car le numéro exact n'a pas été spécifié.&lt;br /&gt;
La recherche de &amp;quot;PARIS&amp;quot; ne retournera jamais &amp;quot;BOULEVARD DE L HOPITAL 75013 PARIS&amp;quot; car aucun élément de la ligne4 n'a été spécifié.&lt;br /&gt;
etc ...&lt;br /&gt;
&lt;br /&gt;
A noter que les payloads utilisés dans ces checkers sont ceux correspondant à la clause &amp;quot;transform&amp;quot; des [[JDONREFv4_Mappings|mappings]] proposés.&lt;br /&gt;
&lt;br /&gt;
=====Modes (mode bulk - en attente de réimplémentation)=====&lt;br /&gt;
&lt;br /&gt;
Le mode bulk s'active simplement en utilisant le paramètre &amp;quot;mode&amp;quot; avec la valeur &amp;quot;bulk&amp;quot; de la sorte :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
         &amp;quot;mode&amp;quot;: &amp;quot;bulk&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
Le paramètre mode prend deux valeurs actuellement.&lt;br /&gt;
#&amp;quot;autocomplete&amp;quot;, il s'agit du mode par défaut, le calcul de la note correspond à la somme de la note des termes trouvés&lt;br /&gt;
#&amp;quot;bulk&amp;quot;, la note de l'autocomplete est divisée par la somme des termes qui auraient pu être trouvés, rapporté sur 200.&lt;br /&gt;
&lt;br /&gt;
=====Exemples de calcul en mode bulk=====&lt;br /&gt;
&lt;br /&gt;
Les exemples qui suivent ne sont pas exhaustifs mais présentent le comportement recherché par la requête en mode bulk.&lt;br /&gt;
La note donnée ici est indicative, car en réalité elle s'appuie sur la fréquence des termes recherchés et trouvés, suivant la logique du moteur à indexation inverse.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''requête'''&lt;br /&gt;
 | '''résultat'''&lt;br /&gt;
 | '''note indicative'''&lt;br /&gt;
 | '''calcul'''&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY DUHEM 59 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4 et commune sont présents. Le code de département est correct. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 130 RUE REMY 59500 DOUAI DUHEM&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 166 = ((50 + 50 + 50 + 50)*0.5/4 + 50 + 50 + 0)*200/150&lt;br /&gt;
 | Tous les éléments de ligne4 (50+50+50+50), code postal et commune (50+50) sont présents. Le pays est absent, mais son poids est de 0. L'ordre des éléments de la ligne 4 n'est pas respecté (*0.5). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Tous les éléments de ligne4, code postal, et commune sont présents. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI&lt;br /&gt;
 | 130 RUE REMY DUHEM 59500 DOUAI FRANCE &lt;br /&gt;
 | 0&lt;br /&gt;
 | Tous les éléments du code postal et commune sont présents. Le pays est absent, mais son poids est de 0. Un malus est toutefois appliqué du fait de l'absence du numéro d'adresse dans la requête, ce qui attribue une note de 0 au total.&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REMY 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 177 = ((50 + 50)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4 ((50 + 50)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | RUE REM DUH 59 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 163 = ((50*75/100 + 50*60/100)/3 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50 + 50). Le pays est absent, mais son poids est de 0. Seuls 2 termes sur 3 sont présents dans la ligne 4, et partiels ((50*75/100 + 50*60/100)/3). Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code postal et la commune sont présent. Le pays est absent, mais son poids est de 0.&lt;br /&gt;
|-&lt;br /&gt;
 | 59500 DOUAI&lt;br /&gt;
 | RUE REMY DUHEM 59500 DOUAI FRANCE&lt;br /&gt;
 | 133 = (0 + 50 + 50 + 0) * 200 / 150&lt;br /&gt;
 | Le code postal et la commune sont présent (50+50). La ligne 4 est absente (0). Le pays est absent, mais son poids est de 0. Le tout pondéré (/150) et ramené à 200 (*200).&lt;br /&gt;
|-&lt;br /&gt;
 | 59505 DOUAI&lt;br /&gt;
 | 59500 DOUAI FRANCE&lt;br /&gt;
 | 100 = (0 + 50 + 0) * 200 /100&lt;br /&gt;
 | La commune est présente (50), mais le code postal est faux (0). Le pays est absent, mais son poids est de 0. NB: pour améliorer cette note (le code postal est très proche), une évolution du TokenFilter de JDONREF devrait être effectuée). NB : à l'heure actuelle, ce score est de 0 : les erreurs ne sont pas tolérées par le mapping défini.&lt;br /&gt;
|-&lt;br /&gt;
 | 59&lt;br /&gt;
 | 59 FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | Le code département est présent.&lt;br /&gt;
|-&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | FRANCE&lt;br /&gt;
 | 200&lt;br /&gt;
 | La ligne 7 est présente.&lt;br /&gt;
|}&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Ces exemples ne présentent pas la prise en compte de la phonétique, qui n'intervient pas dans la notation. Deux requêtes qui disposent de la même phonétique ont les mêmes résultats.&lt;br /&gt;
&lt;br /&gt;
=====Changer de champ pour la recherche=====&lt;br /&gt;
Si vous avez personnalisé votre mapping, il vous est peut-être nécessaire de modifier le champ utilisé par défaut pour la recherche.&lt;br /&gt;
Il s'agit d'utiliser le paramètre default_field. Par défaut, il vaut fullName, mais vous pouvez le modifier.&lt;br /&gt;
Attention à ce que votre champ contienne bien les payloads attendus par les checkers de la requête.&lt;br /&gt;
&lt;br /&gt;
 {&lt;br /&gt;
   &amp;quot;query&amp;quot;: {&lt;br /&gt;
     &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
        &amp;quot;value&amp;quot; : &amp;quot;24 BOULEVARD DE L HOPITAL 75 PARIS&amp;quot;,&lt;br /&gt;
        &amp;quot;default_field&amp;quot; : &amp;quot;fullName&amp;quot;&lt;br /&gt;
     }&lt;br /&gt;
   }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
=====Optimisation=====&lt;br /&gt;
&lt;br /&gt;
Si vous avez réparti vos types sur de multiples index (ce qui est conseillé pour les communes, pays et départements qui nécessite un sharding de 1 pour éviter les effets de bords voir [[JDONREFv4_plugin_GettingStarted#Optimisation_.28une_fois_que_vous_vous_.C3.AAtes_sortis_du_reste.29|getting started]]), le paramètre &amp;quot;maxSizePerType&amp;quot; vous permettra de filtrer les requêtes sur les adresses ou les voies qui seraient en trop grand nombre.&lt;br /&gt;
Par exemple, une requête comme&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
retourne un très grand nombre de documents sur l'ensemble des index. Dans la France entière, il y a environ 695 000 documents qui disposent du terme 'RUE'. La requête prend alors environ (sur mon environnement de test) 2 minutes de calcul, même une fois en cache. Ces performances sont liées au très grand nombre de document à parcourir et à traiter avant de retourner le résultat.&lt;br /&gt;
Toutefois, il existe des pays et des communes correspondant à ce terme, et il pourrait être utile d'obtenir ces réponses !&lt;br /&gt;
&lt;br /&gt;
Si vous avez segmenté vos types par index, la requête :&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query&amp;quot;: {&lt;br /&gt;
      &amp;quot;jdonrefv4&amp;quot; : {&lt;br /&gt;
         &amp;quot;value&amp;quot; : &amp;quot;RUE&amp;quot;,&lt;br /&gt;
         &amp;quot;maxSizePerType&amp;quot;: 10000&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
ne retournera pas les résultats de type &amp;quot;adresse&amp;quot;, ni même ceux de type &amp;quot;voie&amp;quot; dont la quantité est supérieure à 50000 (avec 5 shards, tout dépend de l'organisation de vos index). Seuls les pays et communes seront alors retournées, en quantité raisonnable.&lt;br /&gt;
&lt;br /&gt;
Dans une requête multi-terme, c'est la fréquence du terme le moins fréquent qui est pris en compte.&lt;br /&gt;
&lt;br /&gt;
J'insiste sur le fait que ce paramètre n'est valable que si les types sont répartis sur plusieurs index. Lorsqu'ils sont dans le même index, la requête n'est pas en mesure de faire la différence entre les types de manière efficace.&lt;br /&gt;
&lt;br /&gt;
=====Effets de bord=====&lt;br /&gt;
&lt;br /&gt;
Les exemples présentés ci-dessus induisent nécessairement des effets de bords compréhensibles sur certaines recherches.&lt;br /&gt;
&lt;br /&gt;
Par exemple :&lt;br /&gt;
#Il ne faut pas s'attendre à trouver comme meilleur résultat l'avenue de France en effectuant une recherche sur le seul mot clé &amp;quot;FRANCE&amp;quot;. C'est bien entendu le pays qui aura la meilleure note ...&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_introduction&amp;diff=498</id>
		<title>JDONREFv4 introduction</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_introduction&amp;diff=498"/>
				<updated>2016-02-26T21:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* JDONREFv4 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== JDONREFv4 : Introduction ===&lt;br /&gt;
&lt;br /&gt;
NB : La documentation décrite dans ce wiki est en cours de rédaction, et l'ensemble des services décrit n'est pas encore implémenté.&lt;br /&gt;
&lt;br /&gt;
== JDONREFv4v3 ==&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4v3]] est un simple proxy d'ElasticSearch qui peut être utilisé avec JDONREFv3. Il permet ainsi à un système d'information dans lequel l'usage de JDONREFv3 est répandu de profiter des fonctionnalités apportées par JDONREFv4.&lt;br /&gt;
&lt;br /&gt;
A noter qu'à l'heure actuelle la couverture fonctionnelle complète de JDONREFv3 n'est pas assurée par JDONREFv4.&lt;br /&gt;
Le périmètre de JDONREF est actuellement plus étendu que celui de ElasticSearch car il est spécialisé dans le traitement d'adresses. Il s'agit des fonctions :&lt;br /&gt;
* de normalisation ;&lt;br /&gt;
* de restructuration ;&lt;br /&gt;
* de découpage ;&lt;br /&gt;
* de géocodage (ElasticSearch proposant l'indexation géographique, mais pas le calcul de l'interpolation du tronçon) ;&lt;br /&gt;
&lt;br /&gt;
JDONREFv4v3 s'appuie donc sur les traitements existants de JDONREF pour ces 4 fonctions, mais utilise les fonctionnalités de ElasticSearch pour la validation et le géocodage inverse de centroïde d'adresse.&lt;br /&gt;
&lt;br /&gt;
== JDONREFv4 ==&lt;br /&gt;
&lt;br /&gt;
Le [[JDONREFv4_Plugin|plugin JDONREFv4 pour ElasticSearch]] permet une indexation efficace des adresses permettant de les rechercher avec une pertinence accrue.&lt;br /&gt;
Il passe par la définition de [[JDONREFv4_Mappings|index]] spécifiques, et une [[JDONREFv4_Query|requête]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=497</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=497"/>
				<updated>2016-02-26T21:19:24Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Champs &amp;quot;obligatoires&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoires pour travailler avec la requête JDONREF.&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert de multiples champs pour sa recherche, il est donc important de respecter le nom de ces champs. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect des indexs est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent de mettre en place une requête dédiée à chaque index.&lt;br /&gt;
* Le champ 'score' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en données, il va les piocher dans code_postal, code_departement, ... L'attribut &amp;quot;transforme&amp;quot; est utilisé à cet effet.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4.&lt;br /&gt;
Ces informations varient suivant l'index concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=496</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=496"/>
				<updated>2016-02-26T21:18:33Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Quelques informations à lire avant de commencer */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoires pour travailler avec la requête JDONREF.&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert de multiples champs pour sa recherche, il est donc important de respecter le nom de ces champs. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect des indexs est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent de mettre en place une requête dédiée à chaque index.&lt;br /&gt;
* Le champ 'score' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en données, il va les piocher dans code_postal, code_departement, ... L'attribut &amp;quot;transforme&amp;quot; est utilisé à cet effet.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=495</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=495"/>
				<updated>2016-02-26T21:15:25Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* définir son propre mapping */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=494</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=494"/>
				<updated>2016-02-26T21:14:59Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping pays */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=493</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=493"/>
				<updated>2016-02-26T21:14:31Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping departement */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=492</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=492"/>
				<updated>2016-02-26T21:13:53Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping commune */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=491</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=491"/>
				<updated>2016-02-26T21:13:20Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping voie */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=490</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=490"/>
				<updated>2016-02-26T21:12:48Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping troncon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=489</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=489"/>
				<updated>2016-02-26T21:12:11Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping adresse */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
            &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;: &amp;quot;yes&amp;quot;,&amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
        },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['numero']!=null) { def tokens= ctx._source['numero'].split(' '); for(x in tokens) ctx._source['numero'] += ' ' + x + '|1'; }; if (ctx._source['repetition']!=null) { def tokens= ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|2'; }; if (ctx._source['type_de_voie']!=null) { def tokens= ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|3'; }; if (ctx._source['libelle']!=null) { def tokens= ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens= ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|5'; }; if (ctx._source['code_departement']!=null) { def tokens= ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|6'; }; if (ctx._source['code_arrondissement']!=null) { def tokens= ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|7'; }; if (ctx._source['code_insee']!=null) { def tokens= ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|8'; }; if (ctx._source['code_insee_commune']!=null) { def tokens= ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|9'; }; if (ctx._source['commune']!=null) { def tokens= ctx._source['commune'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|10'; }; &amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=488</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=488"/>
				<updated>2016-02-26T21:11:25Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping poizon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=487</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=487"/>
				<updated>2016-02-26T21:11:09Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Le mapping poizon */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; ,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;score&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot;:&amp;quot;yes&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;analyzed&amp;quot; , &amp;quot;analyzer&amp;quot;:&amp;quot;jdonrefv4_score_analyzer&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
        &amp;quot;transform&amp;quot;: {&lt;br /&gt;
          &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
          &amp;quot;script&amp;quot; : &amp;quot;ctx._source['score']= ''; if (ctx._source['ligne1']!=null) { def tokens= ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|11'; }; if (ctx._source['ligne4']!=null) { def tokens= ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|12'; }; if (ctx._source['ligne6']!=null) { def tokens= ctx._source['ligne6'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|13'; }; if (ctx._source['ligne7']!=null) { def tokens= ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['score'] += ' ' + x + '|14'; };&amp;quot;&lt;br /&gt;
        }&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=486</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=486"/>
				<updated>2016-02-26T21:09:45Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Champs &amp;quot;obligatoires&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['ligne1']!=null) { def tokens = ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|1'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=485</id>
		<title>JDONREFv4 Mappings</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Mappings&amp;diff=485"/>
				<updated>2016-02-26T21:08:59Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Champs &amp;quot;obligatoires&amp;quot; */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;JDONREFv4 introduit différents mapping permettant de gérer des adresses.&lt;br /&gt;
&lt;br /&gt;
C'est le POI ou la Zone qui dispose de la plus grande richesse d'information, mais les autres mappings peuvent disposer d'informations qui leurs sont propres (notamment leur géométrie).&lt;br /&gt;
&lt;br /&gt;
Ils sont fournis dans le plugin sous la forme de fichiers json.&lt;br /&gt;
&lt;br /&gt;
===== Quelques informations à lire avant de commencer =====&lt;br /&gt;
&lt;br /&gt;
Les mappings proposés dans cette page ne sont pas obligatoire pour travailler avec la requête JDONREF (voir [[JDONREFv4_Mappings#son propre mapping|définir son propre mapping]]).&lt;br /&gt;
Toutefois, si vous débutez avec elasticsearch, il sera sans doute plus simple de commencer avec les mappings fournis.&lt;br /&gt;
&lt;br /&gt;
Le mapping du type &amp;quot;poizon&amp;quot; peut être appliqué à tous les types, car il est le plus générique (si un champ n'est pas utilisé, cela ne prend pas de place).&lt;br /&gt;
Toutefois, pour plus de lisibilité, les mappings de chaque type sont fournis de manière allégée.&lt;br /&gt;
&lt;br /&gt;
Les mappings qui suivent disposent aussi de quelques particularités à connaître pour leur bonne lecture.&lt;br /&gt;
&lt;br /&gt;
* JDONREFv4 se sert d'un unique champ pour sa recherche, mais les mappings proposés le construit à partir des champs stockés (store:true). Il est donc important de respecter le nom de ces champs.  [[JDONREFv4_Query|requête]]. Les autres sont aussi généralement associés à une adresse mais ne lui sont pas indispensables. &lt;br /&gt;
* Le respect du type est nécessaire pour le bon usage de la [[JDONREFv4_Query|requête]]. Ils permettent un calcul de règles métier associées à chaque type.&lt;br /&gt;
* Le champ 'codes' est un champ calculé à partir d'autres. Il n'est donc pas nécessaire de l'alimenter en donnée, il va les piocher dans code_postal, code_departement, ... L'attribut copyTo est utilisé à cet effet.&lt;br /&gt;
* Le champ 'fullName' est lui aussi calculé à partir de l'ensemble des champs indexés concernant une adresse. C'est sur ce champ qu'est calculé la requête. Il s'appuie sur l'attribut &amp;quot;transform&amp;quot; pour sa construction.&lt;br /&gt;
* La plupart des champs ne sont pas stockés dans l'index, mais peuvent toujours être obtenus au travers du champ spécial _source (hormis la géométrie). Cela permet d'alléger le poids de l'index.&lt;br /&gt;
* Le champ géométrie est exclus du champ _source pour éviter de surcharger la base. Les géométries des communes sont particulièrement gourmandes. Leur géométrie n'est donc pas du tout accessible (ni même en spécifiant le champ), mais uniquement utilisée à titre de requêtage spatial (topologique). Par contre, une géométrie &amp;quot;pin&amp;quot; est conservée comme géocodage au centroïde et toujours présent dans le champ _source (et lui aussi requêtable).&lt;br /&gt;
* Les champs qui sont marqués &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot; peuvent être utilisés dans des requêtes avec des valeurs brutes (ils ne sont pas analysés). Cela semble pertinent pour les codes, les identifiants, tout ce qui n'est pas du langage naturel en somme. Dans un champ comme &amp;quot;ligne4&amp;quot;, la distinction des termes ne pourra donc pas être réalisée.&lt;br /&gt;
* Vous pouvez bien sûr ajouter autant de champs que vous le souhaitez, construire des requêtes avec, ... la requête jdonrefv4 n'est qu'un outil comme un autre !&lt;br /&gt;
&lt;br /&gt;
===== Glossaire =====&lt;br /&gt;
&lt;br /&gt;
Les champs utilisés dans chacun des mappings sont décrit dans ce tableau.&lt;br /&gt;
Même si la plupart des informations qu'il présente sont évidente, ce tableau m'a été demandé. Il permet de lever l'ambiguité sur l'usage de certain terme de manière synthétique.&lt;br /&gt;
Il reprend aussi par conséquent tous les champs du mapping poizon.&lt;br /&gt;
&lt;br /&gt;
Tous ces champs peuvent ne pas être remplis ! Par contre, si les mappings proposés sont utilisés, il faut respecter leur orthographe.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
|-&lt;br /&gt;
 | poizon_id&lt;br /&gt;
 | identifiant métier du poi ou de la zone considéré&lt;br /&gt;
|-&lt;br /&gt;
 | adr_id&lt;br /&gt;
 | identifiant métier de l'adresse (du poi ou de la zone, lorsqu'il s'agit d'un poi ou d'une zone)&lt;br /&gt;
|-&lt;br /&gt;
 | tro_id&lt;br /&gt;
 | identifiant métier du troncon (auquel appartient l'adresse, lorsqu'il y a une adresse)&lt;br /&gt;
|-&lt;br /&gt;
 | voi_id&lt;br /&gt;
 | identifiant métier de la voie (auquel appartient le troncon, lorsqu'il y a un troncon)&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee&lt;br /&gt;
 | code insee de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_insee_commune&lt;br /&gt;
 | code insee de la commune au cas où code insee représente un arrondissement&lt;br /&gt;
|-&lt;br /&gt;
 | code_postal&lt;br /&gt;
 | code postal de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | code du département où se situe l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | code du pays où se situe le département, la commune, l'adresse, la voie, le troncon, le poi ou la zone ...&lt;br /&gt;
|-&lt;br /&gt;
 | codes&lt;br /&gt;
 | Il s'agit d'un champ calculé qui contient tous les codes qui permettent de trouver une commune (du département au code postal, en passant par le code insee, d'arrondissement, ou de la commune)&lt;br /&gt;
|-&lt;br /&gt;
 | code_arrondissement&lt;br /&gt;
 | code de l'arrondissement si cette notion existe&lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | numero de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | BIS, TER, QUATER, QUINQUIES, A, B, C, ...&lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie&lt;br /&gt;
 | RUE, BOULEVARD, ... le type de voie de l'adresse ou de la voie&lt;br /&gt;
|-&lt;br /&gt;
 | article&lt;br /&gt;
 | le petit article qui se trouve entre le type de voie et le libelle. Comme dans BOULEVARD DE L HOPITAL : &amp;quot;DE L&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | libelle&lt;br /&gt;
 | le libelle complet de la voie (sans article)&lt;br /&gt;
|-&lt;br /&gt;
 | commune&lt;br /&gt;
 | lol&lt;br /&gt;
|-&lt;br /&gt;
 | pays&lt;br /&gt;
 | généralement FRANCE, mais le type pays permet de tous les indexer&lt;br /&gt;
|-&lt;br /&gt;
 | t0 et t1&lt;br /&gt;
 | respectivement le début (inclus) et la fin (exclus) de validité de l'adresse&lt;br /&gt;
|-&lt;br /&gt;
 | poizon_service&lt;br /&gt;
 | les poi et les zones sont généralement décomposés en plusieurs entités. Il pourrait très bien s'agir de type elasticsearch, mais j'ai pour le moment choisi de les distinguer dans ce champ.&lt;br /&gt;
|-&lt;br /&gt;
 | ligne 1, ligne2, ligne3, ...&lt;br /&gt;
 | les lignes au sens de la norme postale. Seule la ligne1 et la ligne7 est utilisée actuellement dans le mapping (sans doute la ligne3 à l'avenir). Les autres champs sont donc laissés pour information, et disponible dans les résultats dans le champ _source. &lt;br /&gt;
|-&lt;br /&gt;
 | pin&lt;br /&gt;
 | généralement le centroïde de l'objet considéré&lt;br /&gt;
|-&lt;br /&gt;
 | geometrie&lt;br /&gt;
 | la géométrie exacte de l'objet considéré. Elle est confondu avec le pin pour les ponctuels. Elle n'est pas stockée, mais indexée pour les requêtes topologiques.&lt;br /&gt;
|-&lt;br /&gt;
 | fullName&lt;br /&gt;
 | ce champ est calculé à partir des autres pour permettre une recherche sur une seule ligne. Le champ &amp;quot;transform&amp;quot; est utilisé à cet effet.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Champs &amp;quot;obligatoires&amp;quot; =====&lt;br /&gt;
&lt;br /&gt;
Aucun champ n'est réellement obligatoire dans le sens où s'il est absent il n'est simplement pas pris en compte.&lt;br /&gt;
Toutefois, il reste important de savoir quels champs sont réellement utiles ou pas.&lt;br /&gt;
&lt;br /&gt;
Le tableau qui suit présente les informations qui sont actuellement utilisées par la requête jdonrefv4 via le champ &amp;quot;transform&amp;quot;.&lt;br /&gt;
Ces informations varient suivant le type concerné.&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''terme''' &lt;br /&gt;
 | '''poizon''' &lt;br /&gt;
 | '''adresse''' &lt;br /&gt;
 | '''voie''' &lt;br /&gt;
 | '''commune''' &lt;br /&gt;
 | '''departement''' &lt;br /&gt;
 | '''pays''' &lt;br /&gt;
|-&lt;br /&gt;
 | ligne1,numero, repetition, type_de_voie, article, libelle&lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | numero&lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | repetition&lt;br /&gt;
 | &lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | type_de_voie, article, libelle&lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_postal, code_insee, code_departement, code_arrondissement, commune&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | au moins 1&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | code_departement&lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | &lt;br /&gt;
 | obligatoire&lt;br /&gt;
 | &lt;br /&gt;
|-&lt;br /&gt;
 | ligne7&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | optionnel&lt;br /&gt;
 | obligatoire&lt;br /&gt;
|-&lt;br /&gt;
 | code_pays&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
 | inutilisé&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Le mapping poizon =====&lt;br /&gt;
&lt;br /&gt;
Un POIZON est un POI (point d'intérêt) ou une Zone (géographique).&lt;br /&gt;
Leur géométrie est différente : un POI est un point, tandis qu'une zone est généralement un polygone (ou multi-polygone).&lt;br /&gt;
Le type geo_shape est alors employé pour leur géométrie commune.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/poizon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;poizon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                          &amp;quot;poizon_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;poizon_service&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
      },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['ligne1']!=null) { def tokens = ctx._source['ligne1'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|1'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping adresse =====&lt;br /&gt;
&lt;br /&gt;
Après les type poizon, le type adresse est le plus complet. Sa géométrie est un point, mais pour des raisons pratiques, le type geo_shape est employé. Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/adresse/_mapping' -d '{&lt;br /&gt;
     &amp;quot;adresse&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;adr_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne2&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne3&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; }; if (ctx._source['numero']!=null) { ctx._source['fullName'] += ' ' + ctx._source['numero'] + '|11'; }; if (ctx._source['repetition']!=null) { def tokens = ctx._source['repetition'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|11'; }; if (ctx._source['type_de_voie']!=null) { def tokens = ctx._source['type_de_voie'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['article']!=null) { def tokens = ctx._source['article'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; }; if (ctx._source['libelle']!=null) { def tokens = ctx._source['libelle'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping troncon =====&lt;br /&gt;
&lt;br /&gt;
Le mapping troncon correspond à une portion de voie. Sa géométrie est une linestring.&lt;br /&gt;
Il dispose de bornes de début et de fin. Mais contrairement à la base de donnée PostgreSQL de JDONREF, il n'a pas de bornes pour chaque coté du troncon (2 troncons sont créés).&lt;br /&gt;
Il n'est pas utilisé par la [[JDONREFv4_Query|requête]] mais pourrait l'être ultérieurement pour fournir une interpolation métrique du géocodage.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/troncon/_mapping' -d '{&lt;br /&gt;
     &amp;quot;troncon&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;tro_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_debut&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;repetition_fin&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping voie =====&lt;br /&gt;
&lt;br /&gt;
Le mapping voie correspond à une adresse sans numéro. Sa géométrie est une linestring (en attendant l'implémentation du multilinestring par elasticsearch).&lt;br /&gt;
Elle dispose d'un numéro de début et de fin.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/voie/_mapping' -d '{&lt;br /&gt;
     &amp;quot;voie&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;voi_id&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_min&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;numero_max&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;integer&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;type_de_voie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;article&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;libelle&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;,&amp;quot;fullName&amp;quot;]},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne4&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;,  &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };  if (ctx._source['ligne4']!=null) { def tokens = ctx._source['ligne4'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|2'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
 }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping commune =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/commune/_mapping' -d '{&lt;br /&gt;
     &amp;quot;commune&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {     &lt;br /&gt;
                          &amp;quot;code_insee&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_insee_commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;commune&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;code_arrondissement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;code_postal&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                          &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne5&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                          &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                          &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                          &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                          &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; }; if ( ctx._source['code_insee']!=null) { def tokens = ctx._source['code_insee'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|7'; }; if (ctx._source['code_insee_commune']!=null) { def tokens = ctx._source['code_insee_commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|6'; }; if (ctx._source['commune']!=null) { def tokens = ctx._source['commune'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|5'; }; if (ctx._source['code_arrondissement']!=null) { def tokens = ctx._source['code_arrondissement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|4'; }; if (ctx._source['code_postal']!=null) { def tokens = ctx._source['code_postal'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|3'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping departement =====&lt;br /&gt;
&lt;br /&gt;
Le mapping commune a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/departement/_mapping' -d '{&lt;br /&gt;
     &amp;quot;departement&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
        &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
        &amp;quot;properties&amp;quot; : {&lt;br /&gt;
                            &amp;quot;code_departement&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;, &amp;quot;copy_to&amp;quot;: [&amp;quot;codes&amp;quot;]},&lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;codes&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne6&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                        },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; }; if (ctx._source['code_departement']!=null) { def tokens = ctx._source['code_departement'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|8'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
    }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== Le mapping pays =====&lt;br /&gt;
&lt;br /&gt;
Le mapping pays a pour géométrie un multipolygon, sans extrusion.&lt;br /&gt;
Son mapping est défini de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
  $ curl -XPUT 'http://localhost:9200/jdonref/pays/_mapping' -d '{&lt;br /&gt;
     &amp;quot;pays&amp;quot;: {&lt;br /&gt;
        &amp;quot;_type&amp;quot;: {&amp;quot;store&amp;quot;: true},&lt;br /&gt;
       &amp;quot;_source&amp;quot;: {&amp;quot;excludes&amp;quot;: [&amp;quot;geometrie&amp;quot;]},&lt;br /&gt;
       &amp;quot;properties&amp;quot; : { &lt;br /&gt;
                            &amp;quot;code_pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_codes_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pays&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot; , &amp;quot;index&amp;quot;: &amp;quot;no&amp;quot;},&lt;br /&gt;
                            &amp;quot;t0&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;t1&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;date&amp;quot;, &amp;quot;format&amp;quot;: &amp;quot;YYYY-MM-dd HH:mm:ss&amp;quot;, &amp;quot;index&amp;quot;:&amp;quot;not_analyzed&amp;quot;},&lt;br /&gt;
                            &amp;quot;ligne7&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;},&lt;br /&gt;
                            &amp;quot;pin&amp;quot; : { &amp;quot;properties&amp;quot; : { &amp;quot;centroide&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_point&amp;quot; , &amp;quot;fielddata&amp;quot; : { &amp;quot;format&amp;quot; : &amp;quot;compressed&amp;quot; , &amp;quot;precision&amp;quot; : &amp;quot;1cm&amp;quot;}}}},&lt;br /&gt;
                            &amp;quot;geometrie&amp;quot; : { &amp;quot;type&amp;quot; : &amp;quot;geo_shape&amp;quot;, &amp;quot;precision&amp;quot;: &amp;quot;1cm&amp;quot;, &amp;quot;tree&amp;quot;: &amp;quot;quadtree&amp;quot;},&lt;br /&gt;
                            &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;jdonrefv4_index_token_count&amp;quot;,&amp;quot;search_analyzer&amp;quot;:&amp;quot;jdonrefv4_search&amp;quot;, &amp;quot;similarity&amp;quot;:&amp;quot;jdonrefv4&amp;quot;}&lt;br /&gt;
                       },&lt;br /&gt;
       &amp;quot;transform&amp;quot; : {&lt;br /&gt;
           &amp;quot;lang&amp;quot; : &amp;quot;groovy&amp;quot;,&lt;br /&gt;
           &amp;quot;script&amp;quot; : &amp;quot;ctx._source['fullName'] = ''; if (ctx._source['ligne7']!=null) { def tokens = ctx._source['ligne7'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|9'; }; if (ctx._source['code_pays']!=null) { def tokens = ctx._source['code_pays'].split(' '); for(x in tokens) ctx._source['fullName'] += ' ' + x + '|10'; };&amp;quot;&lt;br /&gt;
       }&lt;br /&gt;
   }&lt;br /&gt;
  }'&lt;br /&gt;
&lt;br /&gt;
===== définir son propre mapping =====&lt;br /&gt;
&lt;br /&gt;
JDONREFv4 n'attend qu'un unique champ de recherche (qui est personnalisable). Prenons l'exemple du champ de recherche fullName.&lt;br /&gt;
Le minimum pour faire fonctionner la requête jdonrefv4 est :&lt;br /&gt;
#un unique champ de recherche. Il s'agit de fullName par défaut, mais il est personnalisable.&lt;br /&gt;
#le respect des types poizon, adresse, voie, commune, departement, pays (et troncon). Pour le moment, ils ne peuvent pas être personnalisés&lt;br /&gt;
#l'utilisation des payloads appropriés. Il doit s'agir d'entier. Le séparateur reste personnalisable dans les settings de votre index.&lt;br /&gt;
&lt;br /&gt;
Outre le champ de recherche, la requête jdonrefv4 n'est pas personnalisable. Il ne vous est donc pas possible actuellement (sans développement) d'ajouter de nouveau payloads. Les payloads suivant doivent donc être utilisés :&lt;br /&gt;
* 10 = code_pays&lt;br /&gt;
* 9 = ligne7&lt;br /&gt;
* 8 = code_departement&lt;br /&gt;
* 7 = code_insee&lt;br /&gt;
* 6 = code_insee_commune&lt;br /&gt;
* 5 = commune&lt;br /&gt;
* 4 = code_arrondissement&lt;br /&gt;
* 3 = code_postal&lt;br /&gt;
* 11 = numero, repetition&lt;br /&gt;
* 2 = type_de_voie, article, libelle&lt;br /&gt;
* 1 = ligne1&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=484</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=484"/>
				<updated>2016-02-26T21:05:07Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Includes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
Hercule had better watch out !&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.7'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.5/JDONREFv4Test.html&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5beta&lt;br /&gt;
 | 1.7.X&lt;br /&gt;
 | 2016-02-26&lt;br /&gt;
 | Performances. Need a big tuning by now !&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.7.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | final wildcard, fuzzyness, general performances&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed for now).&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanFilter|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[jdonrefv4-settings.json]]&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support, not used by jdonrefv4 any more)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.4. Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=483</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=483"/>
				<updated>2016-02-26T20:58:46Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Releases */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
Hercule had better watch out !&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.7'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.5/JDONREFv4Test.html&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5beta&lt;br /&gt;
 | 1.7.X&lt;br /&gt;
 | 2016-02-26&lt;br /&gt;
 | Performances. Need a big tuning by now !&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.7.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | final wildcard, fuzzyness, general performances&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed for now).&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanFilter|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | jdonrefv4-settings.json&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support, not used by jdonrefv4 any more)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.4. Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=482</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=482"/>
				<updated>2016-02-26T20:58:20Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : v4.0.5beta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
Hercule had better watch out !&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.7'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.5 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.5.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.5/JDONREFv4Test.html&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5beta&lt;br /&gt;
 | 1.7.X&lt;br /&gt;
 | 2016-02-26&lt;br /&gt;
 | Performances. Need a big tuning by now !&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | final wildcard, fuzzyness, general performances&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed for now).&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanFilter|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | jdonrefv4-settings.json&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support, not used by jdonrefv4 any more)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support, not used by jdonrefv4 any more).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.4. Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=481</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=481"/>
				<updated>2015-07-08T20:56:54Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
Hercule had better watch out !&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.3+'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.3 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.3.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
The same will arise soon for PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.3/JDONREFv3Test.html&lt;br /&gt;
&lt;br /&gt;
It only supports index named 'jdonref' for now.&lt;br /&gt;
Of course there is no such limitation for jdonrefv4 nor PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | explain, score tuning &amp;amp; fuzzy match&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed). Read [[PayloadCheckerSpanQuery|PayloadCheckerSpanQuery]].&amp;lt;br&amp;gt; 0.3beta introduce usage of UnsplitFilter&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanFilter|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads used by jdonrefv4).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | jdonrefv4-settings.json&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Accueil&amp;diff=480</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Accueil&amp;diff=480"/>
				<updated>2015-07-08T20:53:15Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue dans le wiki de JDONREF.&lt;br /&gt;
Ce wiki est en cours de documentation dans le cadre du portage de JDONREF pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
Cette documentation et les livrables correspondant sont soumis à licence. Vous trouverez un exemplaire de cette licence [[JDONREFv4_licence|ici]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Hercule n'a qu'à bien se tenir.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_Plugin_BeginnersMode|Prêt à démarrer (débutant)]] avec le plugin JDONREFv4 pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_plugin_GettingStarted|Prêt à démarrer (advanced mode)]] avec le plugin JDONREFv4 pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_Plugin|Plugin JDONREFv4 pour ElasticSearch (expert mode)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4]] (en cours de rédaction).&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4v3|JDONREFv4v3 API]] (en cours de rédaction).&lt;br /&gt;
&lt;br /&gt;
L'accès aux documentations existantes de JDONREFv3 au format PDF est disponible ici : [https://adullact.net/frs/?group_id=632]&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Accueil&amp;diff=479</id>
		<title>Accueil</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Accueil&amp;diff=479"/>
				<updated>2015-07-08T20:47:11Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bienvenue dans le wiki de JDONREF.&lt;br /&gt;
Ce wiki est en cours de documentation dans le cadre du portage de JDONREF pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
Cette documentation et les livrables correspondant sont soumis à licence. Vous trouverez un exemplaire de cette licence [[JDONREFv4_licence|ici]].&lt;br /&gt;
&lt;br /&gt;
Hercule n'a plus qu'à bien se tenir.&lt;br /&gt;
&lt;br /&gt;
== Documentation ==&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_Plugin_BeginnersMode|Prêt à démarrer (débutant)]] avec le plugin JDONREFv4 pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_plugin_GettingStarted|Prêt à démarrer (advanced mode)]] avec le plugin JDONREFv4 pour ElasticSearch.&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4_Plugin|Plugin JDONREFv4 pour ElasticSearch (expert mode)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4]] (en cours de rédaction).&lt;br /&gt;
&lt;br /&gt;
[[JDONREFv4v3|JDONREFv4v3 API]] (en cours de rédaction).&lt;br /&gt;
&lt;br /&gt;
L'accès aux documentations existantes de JDONREFv3 au format PDF est disponible ici : [https://adullact.net/frs/?group_id=632]&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Fichier:.wgLogo.png&amp;diff=478</id>
		<title>Fichier:.wgLogo.png</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=Fichier:.wgLogo.png&amp;diff=478"/>
				<updated>2015-07-08T20:40:21Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : Hydre de Lerne&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Hydre de Lerne&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=477</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=477"/>
				<updated>2015-05-09T01:18:06Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11. These token can't be alone (alone_payloads) at the same time for now.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | alone_payloads&lt;br /&gt;
 | (none) Since 0.4. Only one token by group with the same payload appear in each combination. With &amp;quot;alone_payloads&amp;quot;:[2], that mean the combination BOULEHOPITAL won't be indexed because BOULE et HOPITAL got the same payload that is 2. These token can't be required (required_payloads) at the same time for now.&lt;br /&gt;
|-&lt;br /&gt;
 | at_least_one_payloads&lt;br /&gt;
 | (none) Since 0.4. One or more token by group with the same payload appear in each combination. With &amp;quot;at_least_one_payloads&amp;quot;:[2], that mean the combination 07PARIS won't be indexed because BOULE or HOPITAL got the same payload that is 2 and at least one is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | span_score_payload&lt;br /&gt;
 | (false) Since 0.4. Make a score for each combination as their payloads. Score formula is made of score_items and score_value. It is a relative score, that mean it &lt;br /&gt;
|- &lt;br /&gt;
 | score_maximum&lt;br /&gt;
 | (200) Since 0.4. The score made by span_score_payload is absolute, that mean if it reach the maximum, the combination match 100% the query.&lt;br /&gt;
|-&lt;br /&gt;
 | score_items&lt;br /&gt;
 | (none) Since 0.4. score_items &amp;amp; score_value works together. For each score_items a payload integer value is associated with a score in score_value. Formula follow alone_payloads and at_least_one_payloads and required_payloads. That mean for payloads referenced in alone_payloads you only nead one token to get the score_value. Combinations without required payloads won't be generated, that mean a score of 0. Other payloads are cumulative : that mean one score_value by token of each payload. The total score is calculated by cross_multiplication.&lt;br /&gt;
|-&lt;br /&gt;
 | score_value&lt;br /&gt;
 | (none) Since 0.4. See score_items.&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_limit&lt;br /&gt;
 | (0) Since 0.4. Combination mades of tokens from path file only are limited with the frequent_terms_limit parameter. That means no more than frequent_terms_limit combination made of tokens from path file only will be indexed. 0 value means no limit.&lt;br /&gt;
|-&lt;br /&gt;
 | minimum_score&lt;br /&gt;
 | (100) Since 0.4. Used with span_score_payload only. Combination of score under minimum_score won't be indexed.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=476</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=476"/>
				<updated>2015-05-03T19:39:35Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11. These token can't be alone (alone_payloads) at the same time for now.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | alone_payloads&lt;br /&gt;
 | (none) Since 0.4. Only one token by group with the same payload appear in each combination. With &amp;quot;alone_payloads&amp;quot;:[2], that mean the combination BOULEHOPITAL won't be indexed because BOULE et HOPITAL got the same payload that is 2. These token can't be required (required_payloads) at the same time for now.&lt;br /&gt;
|-&lt;br /&gt;
 | at_least_one_payloads&lt;br /&gt;
 | (none) Since 0.4. One or more token by group with the same payload appear in each combination. With &amp;quot;at_least_one_payloads&amp;quot;:[2], that mean the combination 07PARIS won't be indexed because BOULE or HOPITAL got the same payload that is 2 and at least one is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | span_score_payload&lt;br /&gt;
 | (false) Since 0.4. Make a score for each combination as their payloads. Score formula is made of score_items and score_value. It is a relative score, that mean it &lt;br /&gt;
|- &lt;br /&gt;
 | score_maximum&lt;br /&gt;
 | (200) Since 0.4. The score made by span_score_payload is absolute, that mean if it reach the maximum, the combination match 100% the query.&lt;br /&gt;
|-&lt;br /&gt;
 | score_items&lt;br /&gt;
 | (none) Since 0.4. score_items &amp;amp; score_value works together. For each score_items a payload integer value is associated with a score in score_value. Formula follow alone_payloads and at_least_one_payloads and required_payloads. That mean for payloads referenced in alone_payloads you only nead one token to get the score_value. Combinations without required payloads won't be generated, that mean a score of 0. Other payloads are cumulative : that mean one score_value by token of each payload. The total score is calculated by cross_multiplication.&lt;br /&gt;
|-&lt;br /&gt;
 | score_value&lt;br /&gt;
 | (none) Since 0.4. See score_items.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=475</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=475"/>
				<updated>2015-05-03T19:07:27Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | alone_payloads&lt;br /&gt;
 | (none) Since 0.4. Only one token by group with the same payload appear in each combination. With &amp;quot;alone_payloads&amp;quot;:[2], that mean the combination BOULEHOPITAL won't be indexed because BOULE et HOPITAL got the same payload that is 2.&lt;br /&gt;
|-&lt;br /&gt;
 | at_least_one_payloads&lt;br /&gt;
 | (none) Since 0.4. One or more token by group with the same payload appear in each combination. With &amp;quot;at_least_one_payloads&amp;quot;:[2], that mean the combination 07PARIS won't be indexed because BOULE or HOPITAL got the same payload that is 2 and at least one is mandatory.&lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | span_score_payload&lt;br /&gt;
 | (false) Since 0.4. Make a score for each combination as their payloads. Score formula is made of score_items and score_value. It is a relative score, that mean it &lt;br /&gt;
|- &lt;br /&gt;
 | score_maximum&lt;br /&gt;
 | (200) Since 0.4. The score made by span_score_payload is absolute, that mean if it reach the maximum, the combination match 100% the query.&lt;br /&gt;
|-&lt;br /&gt;
 | score_items&lt;br /&gt;
 | (none) Since 0.4. score_items &amp;amp; score_value works together. For each score_items a payload integer value is associated with a score in score_value. Formula follow alone_payloads and at_least_one_payloads and required_payloads. That mean for payloads referenced in alone_payloads you only nead one token to get the score_value. Combinations without required payloads won't be generated, that mean a score of 0. Other payloads are cumulative : that mean one score_value by token of each payload. The total score is calculated by cross_multiplication.&lt;br /&gt;
|-&lt;br /&gt;
 | score_value&lt;br /&gt;
 | (none) Since 0.4. See score_items.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=474</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=474"/>
				<updated>2015-05-03T19:02:41Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | alone_payloads&lt;br /&gt;
 | (none) Since 0.4. Only one token by group with the same payload appear in each combination. With &amp;quot;required_payloads&amp;quot;:[2], that mean the combination BOULEHOPITAL won't be indexed because BOULE et HOPITAL got the same payload that is 2.&lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | span_score_payload&lt;br /&gt;
 | (false) Since 0.4. Make a score for each combination as their payloads. Score formula is made of score_items and score_value. It is a relative score, that mean it &lt;br /&gt;
|- &lt;br /&gt;
 | score_maximum&lt;br /&gt;
 | (200) Since 0.4. The score made by span_score_payload is absolute, that mean if it reach the maximum, the combination match 100% the query.&lt;br /&gt;
|-&lt;br /&gt;
 | score_items&lt;br /&gt;
 | (none) Since 0.4. score_items &amp;amp; score_value works together. For each score_items a payload integer value is associated with a score in score_value. Formula follow alone_payloads and required_payloads. That mean for payloads referenced in alone_payloads you only nead one token to get the score_value. Combinations without required payloads won't be generated, that mean a score of 0. Other payloads are cumulative : that mean one score_value by token of each payload. The total score is calculated by cross_multiplication.&lt;br /&gt;
|-&lt;br /&gt;
 | score_value&lt;br /&gt;
 | (none) Since 0.4. See score_items.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=473</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=473"/>
				<updated>2015-05-03T18:50:09Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | alone_payloads&lt;br /&gt;
 | (none) Since 0.4. Only one token by group with the same payload appear in each combination. With &amp;quot;required_payloads&amp;quot;:[3], that mean the combination &lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanFilter&amp;diff=472</id>
		<title>PayloadCheckerSpanFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanFilter&amp;diff=472"/>
				<updated>2015-05-03T06:33:11Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Checkers */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Check results for grammar rules according to payloads values.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD|1 DE|1 PARIS|1 07|2 L|3 HOPITAL|3&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;delimited_payload_filter&amp;quot;, &amp;quot;lowercase&amp;quot;, &amp;quot;tokencount_payload_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;delimited_payload_filter&amp;quot; : {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;delimited_payload_filter&amp;quot;,&lt;br /&gt;
                 &amp;quot;delimiter&amp;quot; : &amp;quot;|&amp;quot;,&lt;br /&gt;
                 &amp;quot;encoding&amp;quot; : &amp;quot;int&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               &amp;quot;tokencount_payload_filter&amp;quot; : {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;tokencountpayloads&amp;quot;,&lt;br /&gt;
                 &amp;quot;factor&amp;quot;: 1000&lt;br /&gt;
               }&lt;br /&gt;
       }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will match the query :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;span_payloadchecker&amp;quot; : {&lt;br /&gt;
        &amp;quot;clauses&amp;quot;: [&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;PARIS&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;HOPITAL&amp;quot; } }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;checker&amp;quot;: { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
but not match the following :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;span_payloadchecker&amp;quot; : {&lt;br /&gt;
        &amp;quot;clauses&amp;quot;: [&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;HOPITAL&amp;quot; } }&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;PARIS&amp;quot; } },&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;checker&amp;quot;: { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
because eventhough they got the same payload BOULEVARD and PARIS are not grouped together in the second request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Checkers =====&lt;br /&gt;
&lt;br /&gt;
Notice the following checkers :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''checker type''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
 | '''sample'''&lt;br /&gt;
|-&lt;br /&gt;
 | And&lt;br /&gt;
 | All the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Or&lt;br /&gt;
 | One of the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Or&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Xor&lt;br /&gt;
 | Only one of the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Xor&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Not&lt;br /&gt;
 | The given checker 'data' must not validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Not&amp;quot;, &amp;quot;checker&amp;quot; : { ... } }&lt;br /&gt;
|-&lt;br /&gt;
 | All&lt;br /&gt;
 | All the tokens with the given payload (bytes[] or int) must match to validate the document. You will need tokencountpayloads token filter for that.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;All&amp;quot;, &amp;quot;payload&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | One&lt;br /&gt;
 | One token with the given payload (bytes[] or int) must match to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | Field&lt;br /&gt;
 | Field value (default to _type) must match to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Field&amp;quot;, &amp;quot;field&amp;quot; : &amp;quot;type_de_voie&amp;quot;, &amp;quot;value&amp;quot; : &amp;quot;BOULEVARD&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | Grouped&lt;br /&gt;
 | Groups of tokens by payloads must not interlace to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | BeforeAnother&lt;br /&gt;
 | Check whether tokens with a given payload are just before another group of payloads&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;BeforeAnother&amp;quot;, &amp;quot;payloadbefore&amp;quot; : &amp;quot;AAAD8Q==&amp;quot;, &amp;quot;another&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | If&lt;br /&gt;
 | If the condition match, the then clause must match to validate the document. Otherwise it matches. Be aware of performances.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;If&amp;quot;, &amp;quot;condition&amp;quot; : {...}, &amp;quot;then&amp;quot; : {...} }&lt;br /&gt;
|-&lt;br /&gt;
 | IfElse&lt;br /&gt;
 | If the condition match, the then clause must match to validate the document. If the condition does not match, the else clause must match to validate the document. Be aware of performances (see Switch)&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;IfElse&amp;quot;, &amp;quot;condition&amp;quot; : {...}, &amp;quot;then&amp;quot; : {...}, &amp;quot;else&amp;quot; : {...} }&lt;br /&gt;
|-&lt;br /&gt;
 | Switch&lt;br /&gt;
 | If a switch condition clause match, the switch clause must match to validate the document. Default not customizable set to true (Null).&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Switch&amp;quot;, &amp;quot;field&amp;quot; : &amp;quot;_type&amp;quot;, &amp;quot;clauses&amp;quot; : { &amp;quot;adresse&amp;quot;: { ... }, &amp;quot;commune&amp;quot;: { ... }  } }&lt;br /&gt;
|-&lt;br /&gt;
 | Limit&lt;br /&gt;
 | No more available (&amp;gt;=0.4). Validate the &amp;quot;limit&amp;quot; first documents.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Limit&amp;quot;, &amp;quot;limit&amp;quot; : 100 }&lt;br /&gt;
|-&lt;br /&gt;
 | Null&lt;br /&gt;
 | Validate all documents&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Null&amp;quot; }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=====How it works=====&lt;br /&gt;
&lt;br /&gt;
Elasticsearch is a flat inverted index document, it does not natively make a difference between one term or another. As an example, it uses frequencies to seek for terms in a corpus.&lt;br /&gt;
&lt;br /&gt;
However, in a simple sentence, like an adress, terms might be very differents. Frequency might not be usable in such cases.&lt;br /&gt;
&lt;br /&gt;
For example for the request :&lt;br /&gt;
  57 BD DE L HOPITAL 75 PARIS&lt;br /&gt;
&lt;br /&gt;
We are not intend to get such results :&lt;br /&gt;
  75 BD DE L HOPITAL 75013 PARIS (75 as the number of the adress)&lt;br /&gt;
  75 rue de paris 57 L HOPITAL (the town L HOPITAL in Moselle, it do not exists in real life, it's an example)&lt;br /&gt;
&lt;br /&gt;
The exactitude of the number of the adresse is here more important than its frequency in the corpus.&lt;br /&gt;
&lt;br /&gt;
To get the most pertinent results, ElasticSearch uses lucene engine to get a score for each results. PayloadCheckerSpanQuery overload that scorer with a new score for each results. Actually, it descores bad results.&lt;br /&gt;
&lt;br /&gt;
=====Performance consideration=====&lt;br /&gt;
&lt;br /&gt;
Notice check for span may result slower than a simple match query !&lt;br /&gt;
Although the result will match your working rules, the query will scan over ever document matching your query terms.&lt;br /&gt;
Here is two tips to gain performances :&lt;br /&gt;
#terms are internally set in order of term frequencies. That mean if your request is 'RUE EIFFEL', the internal request will be 'EIFFEL RUE'. The number of document checked for 'RUE' term will be down to 'EIFFEL' count. Of course, GroupedPayload and OneBeforeAnother checkers support this.&lt;br /&gt;
#you can reduce fonctionnality when terms are too frequent. That mean a request for 'RUE' whom results are about 600 000 documents in FRANCE, will bypass payload checker to give a null response. With more terms (like RUE EIFFEL), the checker will be on again. The query got a &amp;quot;limit&amp;quot; parameter to set the number of documents not to reach. This parameter is usefull when you request over multiple indexes with differents level of details.&lt;br /&gt;
&lt;br /&gt;
=====Scoring (soon)=====&lt;br /&gt;
&lt;br /&gt;
Scoring System of PayloadCheckerSpanQuery got two objectives :&lt;br /&gt;
#give the most representative results&lt;br /&gt;
#get an absolute notation , than mean an AI would pick the good choice between the results (see bulk mode)&lt;br /&gt;
&lt;br /&gt;
The scoring concept follows the SpanScorer and the BooleanScorer, and is inspired by scoring in JDONREFv2 and JDONREFv3 (adapted to inversed index).&lt;br /&gt;
It was necessary to change the DefaultSimilarity class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The bulk mode is a mode where score get a ceiling. The ceiling for a result is the maximum score it is possible to get with it. So the bulk mode is simply the score divided by the maximum score. Then it's applying a rule of three to the ceiling for commodity (something like 100% or 20/20).&lt;br /&gt;
&lt;br /&gt;
The bulk mode is less performant than traditionnal way, so it is not recommended for autocomplete, and it is made like an option mode.&lt;br /&gt;
It is not necessary when a human being can choose between results. But an IA can choose automatically a result when the score is for example over 19/20.&lt;br /&gt;
&lt;br /&gt;
=====Customise Scoring=====&lt;br /&gt;
&lt;br /&gt;
(soon)&lt;br /&gt;
&lt;br /&gt;
===== See also =====&lt;br /&gt;
&lt;br /&gt;
[[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
&lt;br /&gt;
[[TokenCountPayloadFilter]]&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=471</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=471"/>
				<updated>2015-05-03T06:32:33Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Includes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.3+'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.3 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.3.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
The same will arise soon for PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.3/JDONREFv3Test.html&lt;br /&gt;
&lt;br /&gt;
It only supports index named 'jdonref' for now.&lt;br /&gt;
Of course there is no such limitation for jdonrefv4 nor PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | explain, score tuning &amp;amp; fuzzy match&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed). Read [[PayloadCheckerSpanQuery|PayloadCheckerSpanQuery]].&amp;lt;br&amp;gt; 0.3beta introduce usage of UnsplitFilter&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanFilter|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads used by jdonrefv4).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | jdonrefv4-settings.json&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanFilter&amp;diff=469</id>
		<title>PayloadCheckerSpanFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanFilter&amp;diff=469"/>
				<updated>2015-05-03T06:32:14Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : Julien2512 a déplacé la page PayloadCheckerSpanQuery vers PayloadCheckerSpanFilter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Check results for grammar rules according to payloads values.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD|1 DE|1 PARIS|1 07|2 L|3 HOPITAL|3&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;delimited_payload_filter&amp;quot;, &amp;quot;lowercase&amp;quot;, &amp;quot;tokencount_payload_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;delimited_payload_filter&amp;quot; : {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;delimited_payload_filter&amp;quot;,&lt;br /&gt;
                 &amp;quot;delimiter&amp;quot; : &amp;quot;|&amp;quot;,&lt;br /&gt;
                 &amp;quot;encoding&amp;quot; : &amp;quot;int&amp;quot;&lt;br /&gt;
               },&lt;br /&gt;
               &amp;quot;tokencount_payload_filter&amp;quot; : {&lt;br /&gt;
                 &amp;quot;type&amp;quot;: &amp;quot;tokencountpayloads&amp;quot;,&lt;br /&gt;
                 &amp;quot;factor&amp;quot;: 1000&lt;br /&gt;
               }&lt;br /&gt;
       }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will match the query :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;span_payloadchecker&amp;quot; : {&lt;br /&gt;
        &amp;quot;clauses&amp;quot;: [&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;PARIS&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;HOPITAL&amp;quot; } }&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;checker&amp;quot;: { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
but not match the following :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;span_payloadchecker&amp;quot; : {&lt;br /&gt;
        &amp;quot;clauses&amp;quot;: [&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD&amp;quot; } },&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;HOPITAL&amp;quot; } }&lt;br /&gt;
          { &amp;quot;span_multipayloadterm&amp;quot; : { &amp;quot;fullName&amp;quot;: &amp;quot;PARIS&amp;quot; } },&lt;br /&gt;
        ],&lt;br /&gt;
        &amp;quot;checker&amp;quot;: { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
because eventhough they got the same payload BOULEVARD and PARIS are not grouped together in the second request.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===== Checkers =====&lt;br /&gt;
&lt;br /&gt;
Notice the following checkers :&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''checker type''' &lt;br /&gt;
 | '''description''' &lt;br /&gt;
 | '''sample'''&lt;br /&gt;
|-&lt;br /&gt;
 | And&lt;br /&gt;
 | All the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;And&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Or&lt;br /&gt;
 | One of the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Or&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Xor&lt;br /&gt;
 | Only one of the given checkers from data array must validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Xor&amp;quot;, &amp;quot;checkers&amp;quot; : [ ... ] }&lt;br /&gt;
|-&lt;br /&gt;
 | Not&lt;br /&gt;
 | The given checker 'data' must not validate to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Not&amp;quot;, &amp;quot;checker&amp;quot; : { ... } }&lt;br /&gt;
|-&lt;br /&gt;
 | All&lt;br /&gt;
 | All the tokens with the given payload (bytes[] or int) must match to validate the document. You will need tokencountpayloads token filter for that.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;All&amp;quot;, &amp;quot;payload&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | One&lt;br /&gt;
 | One token with the given payload (bytes[] or int) must match to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;One&amp;quot;, &amp;quot;payload&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | Field&lt;br /&gt;
 | Field value (default to _type) must match to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Field&amp;quot;, &amp;quot;field&amp;quot; : &amp;quot;type_de_voie&amp;quot;, &amp;quot;value&amp;quot; : &amp;quot;BOULEVARD&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | Grouped&lt;br /&gt;
 | Groups of tokens by payloads must not interlace to validate the document&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Grouped&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | BeforeAnother&lt;br /&gt;
 | Check whether tokens with a given payload are just before another group of payloads&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;BeforeAnother&amp;quot;, &amp;quot;payloadbefore&amp;quot; : &amp;quot;AAAD8Q==&amp;quot;, &amp;quot;another&amp;quot; : &amp;quot;AAAD8Q==&amp;quot; }&lt;br /&gt;
|-&lt;br /&gt;
 | If&lt;br /&gt;
 | If the condition match, the then clause must match to validate the document. Otherwise it matches. Be aware of performances.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;If&amp;quot;, &amp;quot;condition&amp;quot; : {...}, &amp;quot;then&amp;quot; : {...} }&lt;br /&gt;
|-&lt;br /&gt;
 | IfElse&lt;br /&gt;
 | If the condition match, the then clause must match to validate the document. If the condition does not match, the else clause must match to validate the document. Be aware of performances (see Switch)&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;IfElse&amp;quot;, &amp;quot;condition&amp;quot; : {...}, &amp;quot;then&amp;quot; : {...}, &amp;quot;else&amp;quot; : {...} }&lt;br /&gt;
|-&lt;br /&gt;
 | Switch&lt;br /&gt;
 | If a switch condition clause match, the switch clause must match to validate the document. Default not customizable set to true (Null).&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Switch&amp;quot;, &amp;quot;field&amp;quot; : &amp;quot;_type&amp;quot;, &amp;quot;clauses&amp;quot; : { &amp;quot;adresse&amp;quot;: { ... }, &amp;quot;commune&amp;quot;: { ... }  } }&lt;br /&gt;
|-&lt;br /&gt;
 | Limit&lt;br /&gt;
 | Validate the &amp;quot;limit&amp;quot; first documents.&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Limit&amp;quot;, &amp;quot;limit&amp;quot; : 100 }&lt;br /&gt;
|-&lt;br /&gt;
 | Null&lt;br /&gt;
 | Validate all documents&lt;br /&gt;
 | { &amp;quot;type&amp;quot;:&amp;quot;Null&amp;quot; }&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====How it works=====&lt;br /&gt;
&lt;br /&gt;
Elasticsearch is a flat inverted index document, it does not natively make a difference between one term or another. As an example, it uses frequencies to seek for terms in a corpus.&lt;br /&gt;
&lt;br /&gt;
However, in a simple sentence, like an adress, terms might be very differents. Frequency might not be usable in such cases.&lt;br /&gt;
&lt;br /&gt;
For example for the request :&lt;br /&gt;
  57 BD DE L HOPITAL 75 PARIS&lt;br /&gt;
&lt;br /&gt;
We are not intend to get such results :&lt;br /&gt;
  75 BD DE L HOPITAL 75013 PARIS (75 as the number of the adress)&lt;br /&gt;
  75 rue de paris 57 L HOPITAL (the town L HOPITAL in Moselle, it do not exists in real life, it's an example)&lt;br /&gt;
&lt;br /&gt;
The exactitude of the number of the adresse is here more important than its frequency in the corpus.&lt;br /&gt;
&lt;br /&gt;
To get the most pertinent results, ElasticSearch uses lucene engine to get a score for each results. PayloadCheckerSpanQuery overload that scorer with a new score for each results. Actually, it descores bad results.&lt;br /&gt;
&lt;br /&gt;
=====Performance consideration=====&lt;br /&gt;
&lt;br /&gt;
Notice check for span may result slower than a simple match query !&lt;br /&gt;
Although the result will match your working rules, the query will scan over ever document matching your query terms.&lt;br /&gt;
Here is two tips to gain performances :&lt;br /&gt;
#terms are internally set in order of term frequencies. That mean if your request is 'RUE EIFFEL', the internal request will be 'EIFFEL RUE'. The number of document checked for 'RUE' term will be down to 'EIFFEL' count. Of course, GroupedPayload and OneBeforeAnother checkers support this.&lt;br /&gt;
#you can reduce fonctionnality when terms are too frequent. That mean a request for 'RUE' whom results are about 600 000 documents in FRANCE, will bypass payload checker to give a null response. With more terms (like RUE EIFFEL), the checker will be on again. The query got a &amp;quot;limit&amp;quot; parameter to set the number of documents not to reach. This parameter is usefull when you request over multiple indexes with differents level of details.&lt;br /&gt;
&lt;br /&gt;
=====Scoring (soon)=====&lt;br /&gt;
&lt;br /&gt;
Scoring System of PayloadCheckerSpanQuery got two objectives :&lt;br /&gt;
#give the most representative results&lt;br /&gt;
#get an absolute notation , than mean an AI would pick the good choice between the results (see bulk mode)&lt;br /&gt;
&lt;br /&gt;
The scoring concept follows the SpanScorer and the BooleanScorer, and is inspired by scoring in JDONREFv2 and JDONREFv3 (adapted to inversed index).&lt;br /&gt;
It was necessary to change the DefaultSimilarity class.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The bulk mode is a mode where score get a ceiling. The ceiling for a result is the maximum score it is possible to get with it. So the bulk mode is simply the score divided by the maximum score. Then it's applying a rule of three to the ceiling for commodity (something like 100% or 20/20).&lt;br /&gt;
&lt;br /&gt;
The bulk mode is less performant than traditionnal way, so it is not recommended for autocomplete, and it is made like an option mode.&lt;br /&gt;
It is not necessary when a human being can choose between results. But an IA can choose automatically a result when the score is for example over 19/20.&lt;br /&gt;
&lt;br /&gt;
=====Customise Scoring=====&lt;br /&gt;
&lt;br /&gt;
(soon)&lt;br /&gt;
&lt;br /&gt;
===== See also =====&lt;br /&gt;
&lt;br /&gt;
[[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
&lt;br /&gt;
[[TokenCountPayloadFilter]]&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanQuery&amp;diff=470</id>
		<title>PayloadCheckerSpanQuery</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=PayloadCheckerSpanQuery&amp;diff=470"/>
				<updated>2015-05-03T06:32:14Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : Julien2512 a déplacé la page PayloadCheckerSpanQuery vers PayloadCheckerSpanFilter&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECTION [[PayloadCheckerSpanFilter]]&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=468</id>
		<title>JDONREFv4 Plugin</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=JDONREFv4_Plugin&amp;diff=468"/>
				<updated>2015-05-03T06:31:57Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Includes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The JDONREF plugin provides a way to index adresses compatible with french format and search them in a single line format, with 100% accurate results and great order.&lt;br /&gt;
&lt;br /&gt;
It works over the provided PayloadCheckerSpanQuery that target to combines whatever work rules you want (not only adresses) to search data in a single line format, with 100% accurate results and great order.&lt;br /&gt;
Scorers are adaptable for human or computer uses.&lt;br /&gt;
&lt;br /&gt;
===== Plugin installation =====&lt;br /&gt;
&lt;br /&gt;
Simply run at the root of your ''ElasticSearch v1.3+'' installation :&lt;br /&gt;
&lt;br /&gt;
bin/plugin --install elasticsearch-jdonrefv4-0.3 --url http://sourceforge.net/p/jdonref/code/HEAD/tree/Dev/JDONREFv4/dist/elasticsearch-jdonrefv4-0.3.zip?format=raw&lt;br /&gt;
&lt;br /&gt;
This will download the last beta version plugin from sourceforge.&lt;br /&gt;
&lt;br /&gt;
Don't forget restart elasticsearch.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can follow [[JDONREFv3ES_plugin_GettingStarted|the getting started guide]] for jdonref plugin.&lt;br /&gt;
The same will arise soon for PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
There is an embedded site in order to test the query like this :&lt;br /&gt;
&lt;br /&gt;
http://url_elasticsearch:port/_plugin/jdonrefv4-0.3/JDONREFv3Test.html&lt;br /&gt;
&lt;br /&gt;
It only supports index named 'jdonref' for now.&lt;br /&gt;
Of course there is no such limitation for jdonrefv4 nor PayloadCheckerSpanQuery.&lt;br /&gt;
&lt;br /&gt;
===== Releases =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''JDONREF plugin''' &lt;br /&gt;
 | '''elasticsearch''' &lt;br /&gt;
 | '''release date'''&lt;br /&gt;
 | '''detail'''&lt;br /&gt;
|-&lt;br /&gt;
 | 0.1beta&lt;br /&gt;
 | 1.0.0.RC1    &lt;br /&gt;
 | 2014-04-30&lt;br /&gt;
 | POC&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2beta&lt;br /&gt;
 | 1.1.X&lt;br /&gt;
 | 2014-08-25&lt;br /&gt;
 | adress based score with integration tests&lt;br /&gt;
|-&lt;br /&gt;
 | 0.2&lt;br /&gt;
 | '''1.3.X'''&lt;br /&gt;
 | 2014-11-15&lt;br /&gt;
 | production version : adress based score with production tests. human validation only. miss bulk scorer and explain.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.3&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-15&lt;br /&gt;
 | reduce high frequency term frequencies (improve performances)&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4beta&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-05-15&lt;br /&gt;
 | minimum_should_match&lt;br /&gt;
|-&lt;br /&gt;
 | 0.4&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2015-12-31&lt;br /&gt;
 | bulk scorer &amp;amp; minimum_should_match. Performance Problems need to be solved again ! Waiting for ES support.&lt;br /&gt;
|-&lt;br /&gt;
 | 0.5&lt;br /&gt;
 | 1.3.X&lt;br /&gt;
 | 2016-06-31&lt;br /&gt;
 | explain, score tuning &amp;amp; fuzzy match&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===== Includes =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''name'''&lt;br /&gt;
 | '''type'''&lt;br /&gt;
 | '''disponibilité'''&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv3ES_Query|jdonrefv4]]&lt;br /&gt;
 | query/scorer&lt;br /&gt;
 | since 0.2beta (weights and term can't be changed). Read [[PayloadCheckerSpanQuery|PayloadCheckerSpanQuery]].&amp;lt;br&amp;gt; 0.3beta introduce usage of UnsplitFilter&lt;br /&gt;
|-&lt;br /&gt;
 | [[PayloadCheckerSpanQuery|PayloadCheckerSpanFilter]]&lt;br /&gt;
 | filter&lt;br /&gt;
 | since 0.4beta (grammar filter based on payloads used by jdonrefv4).&lt;br /&gt;
|-&lt;br /&gt;
 | [[UnsplitFilter|UnsplitFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.3beta (reduce tokens frequencies).&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_Mappings#Le_mapping_poizon|POI et Zones]], [[JDONREFv4_Mappings#Le_mapping_adresse|adresse]], [[JDONREFv4_Mappings#Le_mapping_troncon|troncon]], [[JDONREFv4_Mappings#Le_mapping_voie|voie]], [[JDONREFv4_Mappings#Le_mapping_commune|commune]], [[JDONREFv4_Mappings#Le_mapping_departement|departement]], [[JDONREFv4_Mappings#Le_mapping_pays|pays]]&lt;br /&gt;
 | mapping&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[JDONREFv4_synonymes|jdonrefv3es_synonym.fr.txt]]&lt;br /&gt;
 | French Synonyms'file&lt;br /&gt;
 | since 0.1beta&lt;br /&gt;
|-&lt;br /&gt;
 | jdonrefv4-settings.json&lt;br /&gt;
 | settings&lt;br /&gt;
 | since 0.2beta jdonrefv4_index, jdonrefv4_search, jdonrefv4_codes_index&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv4TermSimilarity&lt;br /&gt;
 | similarity&lt;br /&gt;
 | since 0.2beta&lt;br /&gt;
|-&lt;br /&gt;
 | [[EdgeNGramWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (edgengram with payloads support)&lt;br /&gt;
|-&lt;br /&gt;
 | [[TokenCountPayloadFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (insert the number of token with given payload in each such payload - used by PayloadCheckerSpanQuery#All).&lt;br /&gt;
|-&lt;br /&gt;
 | [[SynonymWithPayloadsFilter]]&lt;br /&gt;
 | token filter&lt;br /&gt;
 | since 0.2beta (synonym with payloads support).&lt;br /&gt;
|-&lt;br /&gt;
 | JDONREFv3Test.html&lt;br /&gt;
 | site&lt;br /&gt;
 | since 0.2beta (site for jdonrefv3es and index jdonref) Set 10000 for maxSizePerType with dedicated index of 5 shards for each type !&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
See also [[JDONREFv3ES_TODO|todo list]].&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=467</id>
		<title>UnsplitFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=UnsplitFilter&amp;diff=467"/>
				<updated>2015-05-03T00:32:47Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : /* Features */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Detokenize tokens in order to reduce term query frequencies for performance consideration, that is call an unsplit token filter for elasticsearch.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD PARIS 07 HOPITAL&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
with the following mapping :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;, &amp;quot;search_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;unsplit_filter&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;unsplit_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;unsplit&amp;quot;,&lt;br /&gt;
                  &amp;quot;min_words_unsplitted&amp;quot; : 3,&lt;br /&gt;
                  &amp;quot;keep_originals&amp;quot; : false&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  } &lt;br /&gt;
&lt;br /&gt;
will index these terms :&lt;br /&gt;
* 07BOULEVARDHOPITALPARIS&lt;br /&gt;
* 07BOULEVARDHOPITAL&lt;br /&gt;
* 07BOULEVARDPARIS&lt;br /&gt;
* 07HOPITALPARIS&lt;br /&gt;
* BOULEVARDHOPITALPARIS&lt;br /&gt;
&lt;br /&gt;
so that the request :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;query_string&amp;quot; :&lt;br /&gt;
    {&lt;br /&gt;
        &amp;quot;default_field&amp;quot;:&amp;quot;fullName&amp;quot;,&lt;br /&gt;
        &amp;quot;query&amp;quot;:&amp;quot;BOULEVARD PARIS 07&amp;quot;,&lt;br /&gt;
        &amp;quot;analyzer&amp;quot; : &amp;quot;myAnalyzer&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will match the document.&lt;br /&gt;
&lt;br /&gt;
Note that 07BOULEVARDPARIS got a very lower frequency than 07, BOULEVARD, and PARIS.&lt;br /&gt;
&lt;br /&gt;
===== How it works =====&lt;br /&gt;
&lt;br /&gt;
For each token given to the unsplit filter, all ordered combinations are considered.&lt;br /&gt;
That mean unsplit filter can be used with synonyms and ngrams, and nearly all other token filters ([https://adullact.net/forum/forum.php?forum_id=2429 tell me] which one does not works !).&lt;br /&gt;
&lt;br /&gt;
The combination tokens got an 'UNSPLITED' token type.&lt;br /&gt;
&lt;br /&gt;
The unsplit token filter sort tokens in each combination (as strings).&lt;br /&gt;
&lt;br /&gt;
There is a few parameters in order to control theses combinations.&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | keep_originals&lt;br /&gt;
 | (true) Keep original tokens in token stream (so that they remain searchable)&lt;br /&gt;
|-&lt;br /&gt;
 | frequent_terms_only&lt;br /&gt;
 | (true) Uses path parameter as a filter on tokens that are involved in combinations. Set to false only when path is not used.&lt;br /&gt;
|-&lt;br /&gt;
 | path&lt;br /&gt;
 | (/usr/share/elasticsearch/plugins/jdonrefv4-0.2/word84.txt) path to the file in which the unsplit token filter will find tokens involved in combinations. See word84.txt in the plugin as an example.&lt;br /&gt;
|-&lt;br /&gt;
 | min_words_unsplitted&lt;br /&gt;
 | (2) Minimum number of tokens in each combination. Set it to 1 with keep_originals to true will index each original token twice (with different token types). 0 is a special value that mean the maximum value for each token stream. In other words, only 07BOULEVARDHOPITALPARIS will be generated. min_words_unsplitted can be a percentage like &amp;quot;70%&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
 | max_subwords&lt;br /&gt;
 | (1) Set the maximum number of subwords in each combination. Tokens within the same position and the token type &amp;quot;NGRAM&amp;quot; are considered to be subwords. With max_subwords=1 (default value), that means 07BOULEPAR won't be indexed, but 07BOULEVARDPAR and 07BOULEPARIS will.&lt;br /&gt;
|-&lt;br /&gt;
 | subwords_types&lt;br /&gt;
 | (NGRAM) Since 0.4. You might change the subwords's token type that max_subwords parameter tell about.&lt;br /&gt;
|-&lt;br /&gt;
 | required_payloads&lt;br /&gt;
 | (none) Since 0.4. Tokens with these payloads will appear in each combination. With &amp;quot;required_payloads&amp;quot;:[11], that mean each combination from 24|11 BOULEVARD|2 PARIS|2 07|3 HOPITAL|5 will include 24 because token 24 is associate with the payload 11.&lt;br /&gt;
|-&lt;br /&gt;
 | ordered_payloads&lt;br /&gt;
 | (none) Since 0.4. Groups of tokens with the same payload are taken in order, so that only the last can be a subword. With &amp;quot;ordered_payloads&amp;quot;:[2], that mean 07BOULEHOPITAL won't be indexed, but 07BOULEVARDHOP will because HOPITAL is the last word from tokens with payload 2.&lt;br /&gt;
|-&lt;br /&gt;
 | span_payload&lt;br /&gt;
 | (none) Each combination token will be given that payload.&lt;br /&gt;
|-&lt;br /&gt;
 | delimiter&lt;br /&gt;
 | (none) Tokens inside a combination will be separated by this one character wide delimiter.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=TokenCountPayloadFilter&amp;diff=466</id>
		<title>TokenCountPayloadFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=TokenCountPayloadFilter&amp;diff=466"/>
				<updated>2015-05-02T23:30:39Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Include in integer payloads the count of tokens with the same payload within the same field.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
For example, the document :&lt;br /&gt;
  { &amp;quot;fullName&amp;quot;: &amp;quot;BOULEVARD|1 DE|1 PARIS|1 L|2 HOPITAL|2&amp;quot; }&lt;br /&gt;
&lt;br /&gt;
indexed with a mapping like :&lt;br /&gt;
&lt;br /&gt;
  &amp;quot;fullName&amp;quot; : {&amp;quot;type&amp;quot;: &amp;quot;string&amp;quot;, &amp;quot;term_vector&amp;quot; : &amp;quot;with_positions_offsets_payloads&amp;quot;, &amp;quot;index_analyzer&amp;quot;:&amp;quot;myAnalyzer&amp;quot;}&lt;br /&gt;
&lt;br /&gt;
and settings like :&lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
        &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
            &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
                &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                    &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                    &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                    &amp;quot;filter&amp;quot; : [&amp;quot;delimited_payload_filter&amp;quot;, &amp;quot;lowercase&amp;quot;, &amp;quot;tokencount_payload_filter&amp;quot;]&lt;br /&gt;
                },&lt;br /&gt;
            &amp;quot;filter&amp;quot; : {&lt;br /&gt;
                &amp;quot;delimited_payload_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;delimited_payload_filter&amp;quot;,&lt;br /&gt;
                  &amp;quot;delimiter&amp;quot; : &amp;quot;|&amp;quot;,&lt;br /&gt;
                  &amp;quot;encoding&amp;quot; : &amp;quot;int&amp;quot;&lt;br /&gt;
                },&lt;br /&gt;
                &amp;quot;tokencount_payload_filter&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;tokencountpayloads&amp;quot;,&lt;br /&gt;
                  &amp;quot;factor&amp;quot;: 1000&lt;br /&gt;
                }&lt;br /&gt;
        }&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
will index the tokens BOULEVARD, DE, PARIS, L, HOPITAL with the respective payloads : 3001, 3001, 3001, 2002, 2002.&lt;br /&gt;
&lt;br /&gt;
* 3001 means there is 3 tokens with payload 1 ( 3*factor +1 ).&lt;br /&gt;
* 2002 means there is 2 tokens with payload 2 ( 2*factor +2 ).&lt;br /&gt;
&lt;br /&gt;
These factored tokens can be used with the checker All from [[PayloadCheckerSpanQuery]].&lt;br /&gt;
&lt;br /&gt;
===== Features =====&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot;&lt;br /&gt;
 | '''Setting'''&lt;br /&gt;
 | '''description'''&lt;br /&gt;
|-&lt;br /&gt;
 | factor&lt;br /&gt;
 | (Mandatory) The factor by which the count of tokens with a given payload will be multiplied.&lt;br /&gt;
|-&lt;br /&gt;
 | ignored_types&lt;br /&gt;
 | (none) The token's payload associated with these types won't be modified. Others will.&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	<entry>
		<id>http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=SynonymWithPayloadsFilter&amp;diff=465</id>
		<title>SynonymWithPayloadsFilter</title>
		<link rel="alternate" type="text/html" href="http://atelier.adullact.org/plugins/mediawiki/wiki/jdonref-v2/index.php?title=SynonymWithPayloadsFilter&amp;diff=465"/>
				<updated>2015-05-02T23:21:21Z</updated>
		
		<summary type="html">&lt;p&gt;Julien2512 : Page créée avec « Similar to SynonymFilter, with type &amp;quot;payloadsynonym&amp;quot;. Payloads from original tokens are kept.  ===== Sample =====  Settings are like :     {     &amp;quot;index&amp;quot; : {        &amp;quot;analys... »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Similar to SynonymFilter, with type &amp;quot;payloadsynonym&amp;quot;. Payloads from original tokens are kept.&lt;br /&gt;
&lt;br /&gt;
===== Sample =====&lt;br /&gt;
&lt;br /&gt;
Settings are like : &lt;br /&gt;
&lt;br /&gt;
  {&lt;br /&gt;
    &amp;quot;index&amp;quot; : {&lt;br /&gt;
       &amp;quot;analysis&amp;quot; : {&lt;br /&gt;
           &amp;quot;analyzer&amp;quot;: {&lt;br /&gt;
               &amp;quot;myAnalyzer&amp;quot; : {&lt;br /&gt;
                   &amp;quot;type&amp;quot; : &amp;quot;custom&amp;quot;,&lt;br /&gt;
                   &amp;quot;tokenizer&amp;quot; : &amp;quot;whitespace&amp;quot;,&lt;br /&gt;
                   &amp;quot;filter&amp;quot; : [&amp;quot;lowercase&amp;quot;, &amp;quot;synonym&amp;quot;]&lt;br /&gt;
               }&lt;br /&gt;
           },&lt;br /&gt;
           &amp;quot;filter&amp;quot; : {&lt;br /&gt;
               &amp;quot;synonym&amp;quot; : {&lt;br /&gt;
                  &amp;quot;type&amp;quot;: &amp;quot;payloadsynonym&amp;quot;,&lt;br /&gt;
                  &amp;quot;synonyms_path&amp;quot;: &amp;quot;/usr/share/elasticsearch/plugins/jdonrefv4-0.3/jdonrefv4_synonym.fr_FR.txt&amp;quot;&lt;br /&gt;
               }&lt;br /&gt;
           }&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;/div&gt;</summary>
		<author><name>Julien2512</name></author>	</entry>

	</feed>