Meilisearch est un moteur de recherche open source français très rapide et très prometteur. Il est une excellente alternative à Algolia puisqu'il garde une simplicité d'utilisation similaire et une efficacité comparable.
La principale différence réside dans l'hébergement. Algolia est un moteur de recherche en mode SaaS avec un paiement mensuel alors que Meilisearch est hébergé sur votre propre serveur et libre d'utilisation (licence MIT).
Nous avons testé Meilisearch sur notre site Décès en France développer sous Laravel, pour ajouter de la suggestion sur les noms de naissance et voici notre expérience sur l'utilisation.
Premièrement, l'installation est très simple en local. Il suffit de télécharger leur exécutable et de le lancer avec la commande suivante et votre moteur de recherche sera en route :
./meilisearch 888b d888 d8b 888 d8b .d8888b. 888 8888b d8888 Y8P 888 Y8P d88P Y88b 888 88888b.d88888 888 Y88b. 888 888Y88888P888 .d88b. 888 888 888 "Y888b. .d88b. 8888b. 888d888 .d8888b 88888b. 888 Y888P 888 d8P Y8b 888 888 888 "Y88b. d8P Y8b "88b 888P" d88P" 888 "88b 888 Y8P 888 88888888 888 888 888 "888 88888888 .d888888 888 888 888 888 888 " 888 Y8b. 888 888 888 Y88b d88P Y8b. 888 888 888 Y88b. 888 888 888 888 "Y8888 888 888 888 "Y8888P" "Y8888 "Y888888 888 "Y8888P 888 888 [2020-10-23T08:31:21Z INFO meilisearch] Database path: "" [2020-10-23T08:31:21Z INFO meilisearch] Start server on: "127.0.0.1:7700" [2020-10-23T08:31:21Z INFO meilisearch] Environment: "development" [2020-10-23T08:31:21Z INFO meilisearch] Commit SHA: "" [2020-10-23T08:31:21Z INFO meilisearch] Build date: "" [2020-10-23T08:31:21Z INFO meilisearch] Package version: "" [2020-10-23T08:31:21Z INFO meilisearch] No master key found; The server will have no securities.If you need some protection in development mode, please export a key. export MEILI_MASTER_KEY=xxx [2020-10-23T08:31:21Z INFO meilisearch] If you need extra information; Please refer to the documentation: http://docs.meilisearch.com [2020-10-23T08:31:21Z INFO meilisearch] If you want to support us or help us; Please consult our Github repo: http://github.com/meilisearch/meilisearch [2020-10-23T08:31:21Z INFO meilisearch] If you want to contact us; Please chat with us on http://meilisearch.com or by email to bonjour@meilisearch.com [2020-10-23T08:31:21Z INFO tide::server] Server is listening on: http://127.0.0.1:7700
Décès en France contient plus de 25 millions de décès dans la base de données, nous avons voulu dans un premier temps référencer seulement les noms de naissance pour réduire le volume et suivre la stabilité de Meilisearch.
Nous avons donc créer un index avec la configuration suivante, pour ajouter les plus de 1 millions noms de naissance dans l'index :
[ 'uid' => 'last_names', 'primaryKey' => 'last_name_slug', ]
Pour faire des recherches, la requête s'écrit avec 3 lignes de code et ressemble à ceci :
$index->search($request->input('q'), [ 'limit' => 10, 'attributesToRetrieve' => 'last_name', ]);
En terme de performance, nous avons été agréablement surpris. Le temps de réponse est en moyenne de 50ms pour une recherche sur un nom de naissance. Le fichier de base de données occupe environ 800Mo sur le disque.
Les résultats sont tout à fait acceptable pour le cas de Décès en France. Le site est hébergé sur un serveur HybridCloud proposé par PlanetHoster et développer sous le framework PHP Laravel. À noter, pour que les performances soient optimales, il faut que le serveur dispose d'assez de RAM disponible. Cette valeur doit être supérieure ou égale à la taille de la base de données (800Mo dans notre cas).
Vous pouvez voir la suggestion des noms de naissance sur la vidéo suivante ou en créant un compte sur Décès en France.
Vous pouvez retrouver le code source de Meilisearch sur leur repo GitHub.