L’idée d’intégrer une fonction de recherche performante dans votre application peut sembler décourageante, mais en réalité, c’est une tâche qui n’est ni complexe ni chronophage. Voici quelques recommandations solides pour vous guider.
Parmi les nombreuses avancées technologiques de ces deux ou trois dernières décennies, la recherche s’est imposée comme un élément incontournable de notre quotidien. On la retrouve partout, des sites de commerce électronique aux blogs en passant par les bases de connaissances. Ce n’est pas simplement un champ de recherche et une icône pour faire joli, mais un outil qui répond à un besoin crucial.
Si votre entreprise cherche une solution de recherche efficace ou si vous en avez assez de votre système actuel, quelles sont vos options ?
Heureusement, il n’est plus nécessaire de dépenser des fortunes en licences ou de maintenir une équipe de développeurs et d’administrateurs système pléthorique. Il existe aujourd’hui plusieurs moteurs de recherche qui peuvent être installés et intégrés rapidement, particulièrement pour les petites entreprises dont les équipes de développement sont réduites (une ou deux personnes).
MeiliSearch
MeiliSearch est un moteur de recherche de haute qualité que vous rencontrerez certainement.
Qu’est-ce qui fait que MeiliSearch figure parmi mes principales recommandations ?
Voici les raisons :
Open source
Le code source de MeiliSearch est accessible publiquement sur GitHub. Cela permet aux développeurs d’examiner le code en détail, garantissant ainsi la qualité et l’intégrité du programme (absence de portes dérobées ou de scanners, par exemple). De plus, les experts peuvent contribuer à l’amélioration de cette technologie.
Expérience utilisateur optimale
MeiliSearch n’utilise pas de règles complexes (comme « a – b » signifiant a mais pas b). Les résultats de recherche s’affichent de manière fluide au fur et à mesure que vous tapez votre requête. Le moteur est très tolérant et fournit des résultats précis même en cas de fautes de frappe ou d’utilisation de synonymes. Il prend également en charge plusieurs langues.
Excellente expérience développeur (DevEx)
Les développeurs vont adorer MeiliSearch ! Il est non seulement personnalisable et évolutif, mais il s’interface également via une API REST ! La documentation est excellente et complète. Bien que les appels HTTP soient simples dans n’importe quel langage, des exemples dans cinq langages (JavaScript, Ruby, Python, Golang et PHP) sont fournis pour ceux qui sont pressés.
Les solutions de recherche simples doivent être simples à utiliser et à configurer. MeiliSearch remplit tous ces critères ! Si vous souhaitez aller plus loin, vous pouvez le déployer sur DigitalOcean en un seul clic.
Solr
Solr, un projet de la fondation Apache, existe depuis plusieurs années. Il repose sur la bibliothèque Lucene, réputée et très fiable, qui est également à la base d’une autre solution de recherche populaire : ElasticSearch. Autrement dit, Solr est l’une des solutions de recherche les plus robustes, évolutives, conformes aux normes, riches en fonctionnalités et fiables.
Il est utilisé par des géants tels que Disney, eBay, Netflix, Zappos et BestBuy. Cependant, vous pouvez tout à fait l’installer de manière plus simple (sur une seule machine, sans mise à l’échelle ni basculement). Vous pouvez ainsi bénéficier de la puissance de Solr.
Alors, pourquoi choisir Solr ?
Voici quelques excellentes raisons :
Précision et puissance
Solr est l’un des systèmes de recherche les plus précis, performants et puissants au monde. De plus, il est open source, ce qui explique pourquoi de grands noms (comme ceux mentionnés précédemment) l’ont adopté. Sa capacité à traiter des documents et à répondre aux requêtes de recherche est inégalée.
Installation et maintenance aisées
L’installation de Solr est aussi simple que de décompresser le programme et de l’exécuter. Pour les systèmes simples sur une seule machine, la maintenance est minimale ; il suffit de surveiller l’utilisation de la RAM car les solutions de recherche en général et les technologies basées sur Java en particulier peuvent consommer beaucoup de RAM (elles conservent ou essaient de tout conserver dans la RAM pour des lectures/écritures rapides).
Tableau de bord d’administration
Solr est fourni avec un tableau de bord d’administration permettant la surveillance et la configuration visuelles. Avec une courte formation, même les personnes non-développeuses peuvent apprendre à interpréter les graphiques. Peu de solutions de recherche de cette liste offrent de telles fonctionnalités.
Piloté par API, conforme aux normes
Solr fournit une interface de résultats via une API compatible avec plusieurs formats : JSON, CSV, XML et binaire. Il génère des données de surveillance conformes à la norme JMX, ce qui est un atout pour les développeurs Java.
Il y aurait encore beaucoup à dire en faveur de Solr, mais cela nous mènerait à la fin des temps. 😂 Disons simplement que Solr est une solution de premier plan et que vous ne pouvez pas vous tromper, quel que soit le type de données que vous traitez.
Elasticsearch
Elasticsearch était, et reste sans doute, un pionnier de la recherche en texte libre. Aujourd’hui encore, si vous demandez une recommandation à un développeur ou à un administrateur système, il y a de fortes chances qu’Elasticsearch soit le premier nom qui leur vienne à l’esprit. Bien sûr, de nos jours, beaucoup recommandent également des solutions comme Algolia, mais nous avons déjà expliqué comment cela fonctionne. 🤪
Ne vous laissez pas tromper par le bouton « Démarrer l’essai gratuit » dans le graphique ci-dessus. Bien que la technologie de base d’Elasticsearch soit open source et gratuite, l’entreprise essaie de monétiser ses efforts et de cibler les entreprises. Ce que vous voyez ici est donc un essai de leur service cloud, qui facilite la gestion d’Elasticsearch, en particulier lorsque des clusters sont impliqués.
Ouf, il y a beaucoup de choses à clarifier. Récapitulons : Elasticsearch est open source et gratuit, et tout le monde peut le configurer facilement et l’utiliser sans aucune limite.
Voici maintenant les raisons pour lesquelles vous devriez choisir Elasticsearch :
- Moteur de recherche éprouvé et mature. Vous aurez donc plus de chances de trouver des solutions si vous êtes confronté à des bugs « étranges ».
- Concentration optimale sur le clustering, l’évolutivité et les écritures asynchrones.
- Accessible via une API REST simple (que tout le monde a fini par copier).
- Orienté document mais prend en charge les schémas si nécessaire.
- Résultats rapides et précis. Vitesse de recherche paramétrable.
- Documentation stellaire, tant en quantité qu’en utilité.
- Plateforme cloud complète de recherche et d’analyse (la pile ELK) si vous souhaitez payer pour plus de commodité.
Le seul inconvénient que je vois à Elasticsearch est sa forte consommation de RAM. En tant que consultants, il est parfois difficile de convaincre nos clients d’investir dans un serveur à 20 $/mois, qui est malheureusement bien en deçà des besoins d’Elasticsearch.
Si vous souhaitez découvrir Elasticsearch, ce cours Udemy peut vous intéresser.
Typesense
Typesense est un moteur de recherche léger, simple, mais puissant. Ceux qui recherchent la praticité et la simplicité devraient l’essayer.
L’un des principaux avantages de Typesense est que vous pouvez le tester directement sur leur site web. Cela vous permet de gagner du temps et d’éviter la frustration de configurer un système et de tester l’API pour finalement découvrir que certaines fonctionnalités ne fonctionnent pas comme vous l’auriez souhaité.
Cela ne signifie pas qu’il y a forcément des bugs dans le moteur ; simplement que le comportement par défaut du moteur ne correspond pas forcément à vos préférences ou peut être en conflit avec votre domaine d’activité. Fautes de frappe, symboles spéciaux, synonymes… Vous pouvez vérifier les résultats directement sur la page d’accueil (ils utilisent une base de données de livres pour cela).
Comme vous pouvez le voir, cette section se trouve juste en dessous du champ de recherche. J’ai saisi la requête « tra » et je vois les résultats correspondants dans la base de données de livres (ainsi que les métadonnées : total des résultats, page actuelle, etc.).
Typesense offre de nombreux avantages en tant que moteur de recherche :
- La technologie sous-jacente est entièrement open source et ouverte aux contributions.
- Facile à configurer une configuration HA (haute disponibilité) si nécessaire.
- Tolérant aux fautes de frappe et autres bruits dans les requêtes de recherche.
- Système de filtrage avancé pour un contrôle précis des résultats de recherche.
- API REST simple, même si leur documentation peut être un peu difficile à trouver !
- Des clients (SDK) sont disponibles pour plusieurs langages courants (JavaScript, Python, Ruby et PHP).
Enfin, si l’idée de devoir mettre en place de nouveaux serveurs vous rebute, Typesense propose une offre cloud où le provisionnement se fait en un seul clic. La facturation est à l’heure et les lectures et écritures sont illimitées. C’est sans doute la meilleure option pour la plupart des entreprises, à condition d’avoir bien évalué le coût au préalable et de s’être assuré que c’est rentable.
En résumé, Typesense est une excellente solution si vous recherchez un moteur de recherche petit, efficace, précis et performant.
Sonic
Sonic se présente comme une alternative à Elasticsearch, fonctionnant avec « quelques Mo de RAM ».
Comment est-ce possible ?
La machine virtuelle Java (JVM) est connue pour sa forte consommation de RAM (en général, le simple démarrage de la JVM consomme environ 1 Go de RAM). Il n’est donc pas surprenant qu’un programme écrit en Rust (qui offre un contrôle total et une sécurité de la mémoire aux développeurs) puisse être aussi rapide et ne consommer que quelques Mo de RAM.
Au moment d’écrire ces lignes, quelques entreprises figurent parmi ses utilisateurs. Je suis sûr que d’autres entreprises l’utilisent sans avoir pris la peine de se faire connaître. Je ne me souviens plus comment ni quand, mais j’ai déjà entendu parler de Sonic. À l’époque, j’étais content de voir une alternative qui consommait moins de mémoire, mais je pensais qu’il faudrait du temps pour qu’il se stabilise et que les bugs soient corrigés. Il semble que ce soit plus ou moins le cas ; l’avenir nous dira si Sonic gagnera en popularité.
Trêve de bavardages, voici pourquoi vous devriez envisager d’utiliser Sonic pour votre organisation/projet :
- Empreinte mémoire extrêmement faible, comparé à d’autres moteurs de recherche.
- Des bibliothèques sont disponibles pour la plupart des langages de programmation. Les auteurs ont publié des bibliothèques pour Node, PHP et Rust, mais la communauté a créé d’autres bibliothèques (même des langages exotiques comme Elixir et Nim sont pris en charge !).
- Prise en charge de plusieurs langues (il y en a tellement qu’il est difficile de toutes les compter, mais environ 40 à 50 sont prises en charge).
- Surprise ! Vous pouvez même utiliser de nouvelles langues et le moteur fonctionnera (😂😂), mais vous perdrez certaines fonctionnalités avancées, comme les mots vides.
- Moteur très rapide. Si vous consultez leur page GitHub, vous verrez que les temps d’ingestion et de recherche étaient de l’ordre de la microseconde dans plusieurs cas ! Bien sûr, ces tests ont été effectués sur une seule machine et la latence du réseau ne permettrait jamais d’atteindre des chiffres aussi bas.
Si vous souhaitez voir ce moteur en action, rendez-vous sur ce lien (l’une des entreprises utilisatrices) et testez le champ de recherche :
Sonic présente certaines limitations en tant que moteur de recherche. Les développeurs les ont mises en évidence et en ont discuté ouvertement sur leur page GitHub. Je vous conseille d’examiner attentivement cette liste et de vous assurer que vos cas d’utilisation ne se trouvent pas dans leur zone de limitation. Cela dit, tout a ses limites ; c’est juste qu’elles sont parfois cachées et qu’on s’en rend compte trop tard. Par conséquent, je considère Sonic comme un excellent choix de moteur de recherche.
TNTSearch
Voici maintenant une solution intéressante. Ce moteur de recherche complet et prêt pour la production a été écrit en PHP !
Oui, en PHP, parmi tous les langages possibles. Je dis cela non pas parce que je déteste PHP, mais parce que c’est un processus de courte durée par conception.
La deuxième chose intéressante est leur licence, du moins au moment où j’écris ces lignes. La licence est une licence MIT, donc il n’y a aucun problème de ce côté-là, mais les auteurs classent ce logiciel comme PS4Ware ; si vous utilisez TNTSearch en production, vous devriez leur envoyer un jeu PS4 ! 😂😂 Bien sûr, ce n’est pas obligatoire, comme le suggère le « devrait », mais c’est tout de même amusant. J’espère qu’ils mettront à jour la licence en PS5, même s’il est encore un peu tôt pour ça.
En tant que développeur ayant une solide expérience en PHP + Laravel, j’apprécie particulièrement le travail de ces personnes. Leur site web ne donne pas beaucoup d’informations, mais il semble indiquer qu’ils sont consultants. Je vous recommande donc de les contacter si vous avez des projets !
Existe-t-il de bonnes raisons d’utiliser TNTSearch dans vos projets ?
Oui, en voici quelques-unes :
- Codé en PHP, pour PHP, par PHP. L’écosystème PHP a besoin de solutions plus dédiées et de haute qualité comme celle-ci.
- Fonctionnalités importantes telles que la recherche floue, la recherche géographique et la classification de texte.
- Facile de changer l’index de recherche, ce qui est une flexibilité majeure que beaucoup d’autres solutions n’ont pas.
- La stemmisation, le classement BM25 et la tokenisation personnalisée assurent une grande précision.
- Déploiement facile : comme n’importe quel autre package Composer !
Vous pouvez consulter les performances du moteur ici et constater par vous-même à quel point il est rapide et précis. J’insiste sur l’aspect PHP : si vous maintenez un projet PHP, vous avez tout intérêt à rester dans l’écosystème PHP (pourquoi ? pensez aux coûts de reconversion). Dans ce cas, TNTSearch offre une proposition de valeur difficile à refuser !
Vespa
Vespa est une offre large et imposante. Comme quelques autres options de cette liste, il est trop volumineux pour être résumé en quelques mots. Mais je vais essayer. 🙂 Vespa est un moteur de recherche, bien sûr, mais l’utiliser comme un simple moteur de recherche serait gâcher son potentiel.
Vespa a été conçu pour gérer des quantités infinies de données (Big Data) et pour fournir des fonctionnalités basées sur l’apprentissage automatique et une personnalisation avancée.
Vespa se positionne comme un concurrent d’Elasticsearch et des bases de données traditionnelles et fournit une comparaison pertinente sur les cas d’utilisation appropriés.
Comme vous pouvez le constater, plus vous vous rapprochez des opérations axées sur l’apprentissage automatique, plus Vespa prend son sens. En tant que simple moteur de recherche pour une petite ou moyenne entreprise, je ne pense pas qu’il offre des avantages par rapport aux autres options.
Maintenant, si vous générez de grandes quantités de données en continu et que vous souhaitez améliorer la prise de décision grâce à l’IA/ML (une description qui convient à de nombreuses entreprises SaaS aujourd’hui), voici pourquoi Vespa est une solution intéressante :
- Open source : pas de licences bizarres ni de contrats contraignants. Et rien à payer en plus, même si je souligne que les entreprises devraient soutenir financièrement les projets qu’elles utilisent le plus (même 50 $/mois les aideraient beaucoup).
- Temps réel : Vespa est vraiment en temps réel. Il peut non seulement traiter, analyser et rechercher les données à mesure qu’elles arrivent ; même sa configuration peut être modifiée à la volée.
- Évolutif et tolérant : il est très facile de mettre Vespa à l’échelle. Il répond également très bien à la disparition soudaine de nœuds, ce qui garantit une grande fiabilité.
- Classement et recommandations : le système de recherche, de classement et de recommandation de Vespa peut être combiné avec des requêtes structurées pour fournir des résultats très précis.
- IA/ML sans douleur : Vespa est fourni avec des modèles ML pré-entraînés de haute qualité. Vous n’avez pas besoin d’embaucher 20 experts en données pour nettoyer et exploiter vos données.
- Plugins personnalisés : il existe un ensemble complet d’API qui permettent aux développeurs de créer des plugins Java personnalisés, s’ils ont besoin de modifier le fonctionnement du moteur.
Vespa est une solution massive, c’est indéniable. Elle s’adresse aux équipes qui ont dépassé le niveau de démarrage, que ce soit en termes de taille, de prouesses technologiques, de budgets d’infrastructure, de volumes de données quotidiens, ou autre. Pour ce segment, Vespa est une excellente solution et je la recommande vivement.
Ambar
Pour certaines entreprises, les données de recherche ne sont pas déjà transformées et stockées sous forme de documents JSON ; il s’agit plutôt d’un vrai chaos, une collection de toutes sortes de documents tels que des fichiers Word, des PDF, des fichiers HTML, etc. Si vous êtes dans ce cas et que vous pensez qu’il n’y a aucun espoir pour vous, alors voici Ambar !
Le principal avantage d’Ambar est le large éventail de formats de fichiers qu’il prend en charge :
- Formats de fichiers MS Office (.docx, .xlsx, etc.), y compris PowerPoint, Visio et Publisher !
- Formats de fichiers OpenOffice.
- Documents PDF avec OCR automatique pour extraire les informations.
- Images.
- Formats d’archives d’emails comme PST (bonjour, utilisateurs d’Outlook !).
- Messages électroniques avec pièces jointes.
Mais ce n’est pas tout. Ambar est capable de traiter des fichiers volumineux (plus de 30 Mo), des archives ZIP et le multithreading pour une utilisation maximale du processeur et des résultats plus rapides. Si vous avez des années de documents qui traînent sur un disque sur un serveur oublié, il est temps de le récupérer et de tout donner à Ambar !
Conclusion
La recherche 🔎 est puissante, magique et omniprésente !
C’est peut-être même de la magie noire, mais il n’y a aucune raison pour que tout le monde (avec l’aide d’un développeur, bien sûr) ne puisse pas en profiter. Des entreprises aux particuliers en passant par les gouvernements, les moteurs de recherche de cette liste offrent des avantages considérables et un impact exponentiel, quasiment sans effort.
Alors n’hésitez pas, procurez-vous un serveur cloud et installez le logiciel de recherche que vous aimeriez tester.