# Un moteur de recherche pour des centaines de milliers de contenus multilingues : Meilisearch

> URL: https://4eck-media.de/fr/blog/12171/  
> Language: fr  
> Description: Beaucoup de contenus en beaucoup de langues : Meilisearch est ton moteur de recherche parfait pour les défis Enterprise.

---

Les entreprises qui exploitent de grandes plateformes de contenu doivent relever d’énormes défis quand il s’agit d’implémenter une solution de recherche performante. C’est particulièrement vrai pour des projets comme TutKit.com, une vaste plateforme d’apprentissage et de contenus disponibles dans plusieurs langues, où la recherche devient un élément central. Les attentes sont élevées : une recherche rapide, efficace et multilingue est déterminante pour offrir aux utilisateurs une expérience optimale.

Notre plateforme, TutKit.com, propose des dizaines de milliers de contenus, chacun disponible dans des dizaines de langues. Cette variété et ce volume imposent de fortes exigences à la fonctionnalité de recherche, doublées d’autres défis : performance, charge sur la base de données et sécurité de la base de données. La recherche doit non seulement être rapide et précise, mais aussi prendre efficacement en charge le multilinguisme. Voici une étude de cas : comment nous avons trouvé avec Meilisearch le moteur de recherche parfait pour nous.

## Le moteur de recherche idéal pour les plateformes de contenu : défi et attentes

Au début, nous avions une solution de recherche implémentée par une agence externe. Elle reposait sur MySQL et était, pour rester poli, insuffisante. Les temps de chargement des résultats atteignaient jusqu’à 10 secondes, ce qui était frustrant pour nos utilisateurs et dégradait fortement l’expérience. De plus, cette solution ne supportait pas correctement le multilinguisme. Cette agence externe — pourtant spécialisée Laravel — était simplement dépassée par un projet comme TutKit.com. Le constat était clair : une amélioration radicale était nécessaire. Et nous nous en chargerions nous-mêmes.

## Le choix de Meilisearch

À la recherche d’une meilleure solution, nous sommes tombés sur Meilisearch. Ce qui nous a particulièrement impressionnés, c’est la vitesse et l’expérience utilisateur moderne. La présence web de Meilisearch et l’UX convaincante ont été une première confirmation que l’entreprise était moderne et agile. Le véritable enthousiasme est venu en testant la vitesse des résultats : c’était le jour et la nuit comparé à notre solution précédente. De plus, Meilisearch offrait un excellent support du multilinguisme, ce qui était décisif pour nous.

1 000 résultats en 2 ms… voilà ce qui s’appelle un argument :

Nous avons finalement opté pour la version Open Source de Meilisearch. Ce choix s’est imposé parce qu’il nous donnait un contrôle total sur les résultats de recherche, sans coûts supplémentaires de licence ni développeurs externes dont on ne sait même pas s’ils mèneront le projet à bien — ce que nous avons malheureusement expérimenté par le passé.

## L’implémentation de Meilisearch

L’intégration de Meilisearch à notre plateforme TutKit.com a été la première étape pour améliorer la fonctionnalité de recherche. Voici les détails de cette implémentation et de la manière dont elle est gérée actuellement chez nous.

### Mise en place et configuration

Nous avons choisi d’utiliser Meilisearch en version Open Source pour garder un contrôle total sur nos solutions de recherche. L’installation a commencé par le téléchargement du serveur Meilisearch depuis le site officiel. Pour assurer un fonctionnement stable et fiable, nous avons mis en place un service systemd, configuré pour que Meilisearch démarre automatiquement au boot du serveur et redémarre tout seul en cas de défaillance.

```
# Exemple de fichier de service systemd pour Meilisearch
[Unit]
Description=MeiliSearch
After=systemd-user-sessions.service

[Service]
Type=simple
ExecStart=/usr/bin/meilisearch --http-addr 127.0.0.1:7700 --env production --master-key *****
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target
```

### Configuration de sécurité

La sécurité est un aspect important de la configuration de Meilisearch. Nous avons créé deux clés pour répondre aux exigences. La clé master, qui donne un accès complet à l’instance Meilisearch, n’est utilisée qu’en backend. La clé API, aux permissions plus restreintes, est utilisée pour les recherches et autres tâches utilisateurs. Cette séparation garantit que les opérations critiques côté backend sont protégées, tandis que les interactions côté frontend restent efficaces et sûres.

### Intégration avec Laravel

Notre plateforme TutKit.com repose sur le framework PHP Laravel, et nous avons utilisé la bibliothèque MeiliSearch-PHP comme base pour l’intégration. La clé API est utilisée dans notre application Laravel pour se connecter à Meilisearch. Cela renforce considérablement la sécurité, car seules les fonctions autorisées par la clé API sont accessibles, ce qui minimise le risque d’actions non autorisées.

```
// Exemple de configuration de Meilisearch dans Laravel
'connections' => [
    'meilisearch' => [
        'host' => env('MEILISEARCH_HOST', 'http://localhost:7700'),
        'key' => env('MEILISEARCH_KEY', null),
    ],
],
```

### Indexation et gestion des données

Un aspect central de notre implémentation a été la gestion et l’indexation efficaces des données. Nous avons développé une commande console personnalisée dans Laravel, spécifiquement conçue pour des mises à jour de grande ampleur ou pour amorcer le processus d’indexation. Cette commande ne cible que les jeux de données pertinents à indexer. Nous évitons ainsi un traitement inutile et nous concentrons sur l’essentiel.

```
// Exemple de commande console personnalisée dans Laravel
Artisan::command('index:content', function () {
    // Code pour indexer les jeux de données pertinents
})->describe('Indexe tous les contenus pertinents');
```

Cet exemple est, bien sûr, très simplifié. Le code de notre commande fait 400 lignes.

### Mise à jour automatique des index de recherche

Un atout majeur de notre implémentation est la capacité à détecter automatiquement les changements sur les modèles Laravel et à y réagir. Dès que des données sont mises à jour, ajoutées ou supprimées, l’index Meilisearch correspondant est actualisé rapidement et efficacement pour ne refléter que ces changements. Cette indexation ciblée évite une réindexation complète et garde nos données Meilisearch toujours à jour. Voici un exemple de code pour la mise à jour d’un article de blog :

(Exemple de code Laravel pour observer les changements de modèles et déclencher l’indexation Meilisearch.)

Là encore, l’exemple est très simplifié — notre code, lui, traite plusieurs modèles et différents statuts. Mais le principe est clair.

### Optimisation et maintenance

La maintenance et l’optimisation régulières de l’intégration Meilisearch sont déterminantes pour la performance à long terme. En tirant parti des mises à jour régulières de Meilisearch, nous bénéficions d’améliorations continues et de nouvelles fonctionnalités. Cela garantit que notre solution de recherche reste à jour et capable de suivre la croissance des exigences de notre plateforme.

Si tu veux aussi évaluer Meilisearch pour ton projet, tes développeurs trouveront ici une documentation sur l’implémentation de Meilisearch.

Cette petite animation montre clairement :

- la recherche est ultra-rapide
- elle gère les fautes de frappe et affiche tout de même les bons résultats
- les résultats instantanés arrivent après quelques lettres seulement
- les filtres de recherche permettent une restriction rapide des résultats

## Les effets de Meilisearch sur TutKit.com

L’intégration de Meilisearch dans TutKit.com par notre propre équipe de développement s’est révélée un grand succès. Avec une solution de recherche rapide et efficace, qui prend en compte le multilinguisme et de grands volumes de données, nous avons considérablement amélioré l’expérience utilisateur. Notre implémentation maison nous permet de concevoir la recherche exactement selon nos besoins tout en conservant le contrôle et la sécurité nécessaires à une plateforme de contenu performante.

Avec Meilisearch, nous avons obtenu une nette amélioration en vitesse et en efficacité de la recherche. L’indexation de nouvelles données est désormais ultra-rapide, et la charge serveur est sensiblement réduite. Nos utilisateurs bénéficient de résultats rapides et pertinents, ce qui améliore beaucoup l’expérience et réduit la frustration liée aux longs temps de chargement.

Sur le plan financier, nous avons réalisé des économies importantes en utilisant la version Open Source de Meilisearch. La forte performance de Meilisearch nous permet en outre de nous passer d’assistance externe, ce qui réduit encore nos coûts.

Nous avons hâte de voir comment Meilisearch va évoluer. Nous espérons que les versions futures intégreront davantage de fonctions d’IA, qui sauront mieux saisir l’intention de recherche des utilisateurs et réduire le besoin de filtres et de catégorisations. Meilisearch s’est révélé être le bon choix pour nous.

En conclusion : nous avons trouvé avec Meilisearch le moteur de recherche parfait qui nous aide à offrir à nos utilisateurs une recherche rapide, multilingue et conviviale. Selon nous, c’est aujourd’hui la technologie de recherche optimale pour des défis Enterprise avec des centaines de milliers ou des millions de contenus.
