Mettre en oeuvre rapidement l’ autocomplétion avec Elasticsearch

Le mécanisme d’auto complétion peut se réaliser assez facilement dans elasticsearch avec les suggestions.

Voici un exemple simple d’auto complétion

Prérequis

Voici un schéma de démo que j’ai crée et des exemples

Création de l’index

put /test

Configuration de l’autocomplétion

Il faut assigner un champ de type completion dans le mapping

PUT /test/suggestion/_mapping
 {
 "suggestion": {
 "properties": {
 "name": {"type": "string"},
 "name_suggest": {
 "type": "completion",
 "payloads": true
 }
 }
 }
 }

Test

Insertion des données

POST /test/suggestion
 {
 "name" : "nom1",
 "name_suggest" : "nom1"
 }

POST /test/suggestion
 {
 "name" : "nom2",
 "name_suggest" : "nom2"
 }

Exemple de recherche

Requête

POST /test/_suggest
 {
 "suggestion" : {
 "text" : "n",
 "completion" : {
 "field" : "name_suggest"
 }
 }
 }

Résultat

{
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "suggestion": [
      {
         "text": "n",
         "offset": 0,
         "length": 1,
         "options": [
            {
               "text": "nom1",
               "score": 1
            },
            {
               "text": "nom2",
               "score": 1
            }
         ]
      }
   ]
}

J’essaierai dans un prochain article d’intégrer une auto complétion plus intelligente , basée sur les phrases notamment.

Vus : 731
Publié par Littlewing : 368