Elasticsearch est un moteur de recherche performant qui peut s’intégrer sur tout type de projet qu’il soit web ou digital et permet de s’adapter à une multitude de cas de figure.
Leboncoin, eBay, Amazon mais aussi d’autres sites plus modestes de petites annonces développés sur mesure intègrent des moteurs de recherches qui trouvent pour vous (presque) tout ce que vous voulez. Mais comment font-ils pour répondre aux différentes requêtes que vous leur soumettez ? Comment font-ils pour retourner des résultats correspondant à « Renault Clio Phase 2 » alors que vous n’avez saisi que « Clio 2 » dans votre champ de recherche ?
Les algorithmes de recherche simple, que nous pouvons qualifier de LIKE, correspondant au nom de la fonction SQL exécuté en base de données permettent de faire des recherches simples, avec l’adjonction du caractère % pour un peu plus de souplesse, nous ne rentrerons pas dans le détail de l’utilisation de ce dernier.
Pour reprendre l’exemple initial, nous effectuons notre recherche « Clio 2 », en l’état si elle est exécutée ainsi d’un point de vue serveur nous aurons : quand le champ titre contient ‘Clio 2’ alors retourne les résultats correspondants. Nous aurons alors tous les résultats contenant le terme exact ‘Clio 2’, et malheureusement la bonne affaire qu’est la « Renault Clio Phase 2 » nous passera sous le nez…
Ce problème peut être contourné de plusieurs façons, soit en développant une fonction qui reprend caractère par caractère les éléments de la chaine recherchée (Clio 2) et en les agrégeant afin de faire une requête disant, si le champ titre contient ‘Clio’ et si le champ titre contient ‘2’ alors retourne les résultats. Parfait nous avons la solution ! mais ce que vous ne savez pas, c’est que vous passez peut-être à côté d’une superbe ‘Clio 3’ et que si vous la verriez dans les résultats de recherche à la suite des résultats de ‘Clio 2’. Cela vous inciterait peut-être à vous orienter vers ce modèle, ce que permet difficilement de faire la recherche telle que nous l’avons présenté précédemment.
Pour résoudre ce genre de problématique, c’est à cet instant qu’entre en action la recherche full-text, qui est aussi supportée par les moteurs de base de données récents, mais qui ne permet pas d’effectuer des réglages pointus en restant performant. Elasticsearch et en grande partie dédié à la recherche, que je qualifierais de recherche intelligente. C’est-à-dire qu’il sera capable, selon les réglages appliqués, de nous retourner les résultats par pertinence, entre autres. La recherche « Clio 2 » nous retournera alors l’annonce intitulée « Renault Clio Phase 2 » et vice versa, car le système est pensé pour cela.
Selon les résultats de recherche, Elasticsearch donne un indice de pertinence. Si un article de blog dédié à l’automobile parle majoritairement de « Renault Kangoo » en faisant de multiples allusions à ce terme dans le contenu, et qu’il est comparé une fois au « Citroën Berlingo » et au « Peugeot Partner » : les résultats de recherche pour « Kangoo » retourneront cet article en priorité. À l’inverse une recherche sur « Berlingo » retournera un article dédié à celui-ci et placera plus loin dans les résultats de recherche l’article sur le Kangoo.
La recherche par distance est aussi une des possibilités natives d’Elasticsearch. Si les coordonnées GPS d’une annonce sont renseignées, il est alors possible d’indiquer un critère de recherche de distance couplé à une géolocalisation afin d’obtenir les résultats ordonnés non plus par pertinence, mais par distance (les critères d’ordonnancement peuvent être aussi priorisés), Utile § sur un site de petites annonces, ou un site de location/vente immobilière.
C’est à partir de ces problématiques que Narobaz propose pour les projets de ses clients, ce type de moteur de recherche, qui nécessite une infrastructure dédiée pour rester indépendant, et adapter aux besoins de nos clients tout en les conseillant et les accompagnant dans leur réflexion et leur projet.