Hey bonjour, vous 😁.
Comment ça va ? Bien, pas trop froid ? bon tant mieux !
Cette semaine l’article est pour mes collègues développeurs, on va parler de recherche … mais de vrai recherche !
C’est un fait ! dans les projets sur lesquels je suis passé j’ai souvent vu ce système de gestion de base de donnée (ou MariaDB ou encore Postgresql) utilisée comme moteur de recherche avec de truc du genre “where my_attribute LIKES ‘%blabla%”
Et c’est une très mauvaise pratique …
Selon moi, un système de gestion de base de données relationnel, est conçu pour une tâche simple, c'est-à- dire … stocker des données et y accéder directement. Je m’explique si vous dites clairement à MYSQL que vous souhaitez accéder à une ou plusieurs entrées en précisant clairement son id ou un de ses autres attributs alors il sera capable de trouver ce que vous voulez très rapidement, il est conçu pour ça, mais si vous commencez à vouloir l’utiliser comme moteur de recherche … il ne sera pas performant… rien que le code nécessaire pour chercher sur plusieurs champs est une blague … du genre “where my_attribute 1 LIKES or where ….” Bref, vous avez compris l’idée (au pire, testez par vous-mêmes 😛).
En fait, pour la recherche il existe d'autres systèmes de base de données, on les appelle des bases de données indexées et il en existe plusieurs (comme les SGBD).
Contrairement aux SGBD, il n’y a aucune relation, les données sont posées “comme ça” à plat dans une base de données indexée, imaginez plein de ligne Excel, et du coup il y a des données dupliquées, pour des articles, par exemple, chaque ligne contient sa catégorie en toutes lettres contrairement au SGBD, ou l’ont mettrait un simple lien qui pointe vers la catégorie, on est là pour rechercher ! pas pour optimiser l’espace mémoire … 😛
C’est quoi le SAAS ? J’ai fait un article dessus, non, mais ! 🤣
Là comme ça de tête en solution SAAS, il y a Algolia, que j’ai utilisée il y a quelques années sur un projet de dev sur ce site, ils l’utilisent toujours aujourd’hui d’ailleurs. À l’époque j’ai choisi Algolia, car le rapport performance / coût était intéressant, néanmoins aujourd’hui ils ont changé de modèle économique et il est selon moi moins intéressant, après ça reste mon avis.
Pour ceux qui veulent mettre les mains dans le cambouis en Open Source, il y a ElasticSearch ou encore Lucene, par exemple.
Ces bases de données indexées sont les plus connues et elles sont très bien documentées.
Si vous voulez un exemple de recherche avec ElasticSearch vous pouvez en trouver un sur cette page de mon site, à l’époque (il y a un an), j’ai utilisé ELS pour avoir un petit moteur de recherche rapide et ça a fait parfaitement le job et ce fut la base de mon système à moi … Ludo Dev - Lightning Search.
Ici vous allez voir ce qu’il est possible de faire quand on se base sur les bons outils ....
Pour mes derniers projets, je voulais un moteur de recherche ultra rapide et ultra efficace.
Du coup, basé sur ElasticSearch je me suis fait ma version ultra optimisée, je voulais que ce soit simple rapide et efficace et je voulais :
Du coup vous pouvez voir le résultat de la petite barre de recherche sur la fromagerie en ligne, et dans la liste des fromages c’est le moteur de recherche plus avancée… j’ai essayé de le rendre rapide convivial et très agréable à utiliser, comme je l’ai dit, Lightning Search est basé sur ElasticSearch avec des patchs maison pour le rendre encore plus rapide… même avec plein de recherche en même temps.
L’idée de cet article était de vous mettre sur la voie des bonnes pratiques en termes de recherche, je ne voulais pas non plus que ça vous tombe tout cuit dans le bec, il va falloir chercher un minimum pour faire un moteur de recherche sympa … mais vous êtes passionné… alors vous y arriverez 😁
À la semaine prochaine 😊