Menu

MeiliSearch une alternative à Algolia

Publié en Octobre 2020 - Développement web, Logiciel Libre

meilisearch-moteur-de-recherche

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.