Combien coûte réellement une recherche produit pertinente quand le budget mensuel se compte en dizaines d’euros, pas en centaines ? C’est la question qui se pose pour une petite boutique dont le catalogue dépasse quelques centaines de références : la recherche native de WordPress devient insuffisante, mais les services de recherche propriétaires facturés à l’usage représentent souvent un coût disproportionné par rapport au chiffre d’affaires. Ce tutoriel ne traite pas la configuration d’Algolia elle-même, mais présente Meilisearch, un moteur open source auto-hébergeable, comme alternative directe pour ce cas de figure.
Installer Meilisearch sur un petit serveur
Meilisearch se distribue sous forme d’un binaire unique, sans dépendance lourde comme une JVM, ce qui le rend particulièrement adapté à un hébergement modeste. L’installation via Docker reste la méthode la plus simple à maintenir dans la durée :
docker run -d --name meilisearch \
-p 7700:7700 \
-e MEILI_MASTER_KEY="cle_maitre_secrete" \
-v /donnees/meilisearch:/meili_data \
getmeili/meilisearch:v1.8
Une fois lancé, le service expose une API REST simple, avec un tableau de bord d’administration accessible directement sur le port exposé, utile pour vérifier visuellement le contenu d’un index sans écrire de requête.
Créer l’index et définir les attributs de recherche

Contrairement à d’autres moteurs qui demandent un schéma strict, Meilisearch accepte des documents JSON sans structure préalable imposée, mais il reste utile de préciser quels attributs doivent être recherchables et lesquels servent uniquement au filtrage :
curl -X PATCH 'http://localhost:7700/indexes/produits/settings' \
-H 'Authorization: Bearer cle_maitre_secrete' \
-H 'Content-Type: application/json' \
-d '{
"searchableAttributes": ["nom", "description", "reference"],
"filterableAttributes": ["categorie", "prix", "en_stock"]
}'
Indexer le catalogue depuis WooCommerce
L’export s’appuie exclusivement sur des fonctions natives WooCommerce, sans extension tierce. Un script exécuté via WP-CLI parcourt le catalogue et envoie les documents par lot à l’API Meilisearch :
$produits = wc_get_products( array( 'limit' => -1, 'status' => 'publish' ) );
$documents = array();
foreach ( $produits as $produit ) {
$documents[] = array(
'id' => $produit->get_id(),
'nom' => $produit->get_name(),
'description' => wp_strip_all_tags( $produit->get_short_description() ),
'reference' => $produit->get_sku(),
'prix' => (float) $produit->get_price(),
'en_stock' => $produit->is_in_stock(),
'categorie' => wp_get_post_terms( $produit->get_id(), 'product_cat', array( 'fields' => 'names' ) ),
);
}
wp_remote_post( 'http://localhost:7700/indexes/produits/documents', array(
'headers' => array(
'Authorization' => 'Bearer cle_maitre_secrete',
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( $documents ),
) );
Cette indexation initiale peut ensuite se compléter d’une synchronisation planifiée via une tâche cron, ou d’un hook ciblé sur woocommerce_update_product pour maintenir un index toujours à jour sans réindexer l’intégralité du catalogue à chaque modification.
Interroger l’index depuis le frontend
La recherche se fait par une requête directe depuis le navigateur vers l’API Meilisearch, sans repasser par PHP ni par une requête MySQL. La tolérance aux fautes de frappe est activée par défaut, ce qui distingue immédiatement l’expérience de recherche par rapport à la recherche native WordPress :
GET /indexes/produits/search?q=chausure+randonee
Malgré la faute de frappe volontaire sur « chaussure » et « randonnée », Meilisearch retourne les résultats pertinents grâce à sa tolérance aux fautes intégrée nativement, un comportement qu’il faudrait reconstruire manuellement avec une simple requête SQL.
Comparaison rapide avec un service propriétaire
- Coût : un serveur modeste suffit pour Meilisearch, contre une facturation au volume de recherches pour un service propriétaire.
- Hébergement : les données restent entièrement sous contrôle, un point parfois important pour la conformité RGPD.
- Maintenance : Meilisearch demande un minimum d’administration système, absente avec un service géré.
Prévoyez une sauvegarde régulière du dossier de données Meilisearch : contrairement à un service géré, la responsabilité de la sauvegarde repose entièrement sur la boutique qui l’héberge.
Pour aller plus loin
Pour une petite boutique avec un budget d’infrastructure limité, Meilisearch offre l’essentiel de ce qu’apporte un service de recherche propriétaire — pertinence, tolérance aux fautes, filtres à facettes — sans coût récurrent lié au volume. Le seul investissement réel est le temps de maintenance système, largement compensé par l’indépendance vis-à-vis d’un service tiers facturé à l’usage.