Développement Web

Meilisearch vs Typesense vs PostgreSQL FTS : lequel choisir en 2026

11 min de lecture

📍 Article principal de la série : Meilisearch 2026 : le guide pratique. Lisez le guide général pour la vue d’ensemble.

Vous hésitez entre Meilisearch, Typesense et PostgreSQL Full Text Search pour votre prochain projet. Cet article tranche en 8 critères concrets, avec benchmarks reproduits sur Hetzner CX23 et CCX13, sur des datasets francophones et arabophones réels. Sans favoritisme, sans publi-rédactionnel.

Prérequis pour reproduire les tests

  • Hetzner CX23 (2 vCPU, 4 Go RAM) ou OVH VPS-1 équivalent.
  • Dataset de test : 100 000 produits e-commerce francophones (export d’une marketplace réelle, anonymisé).
  • Outils : oha ou k6 pour la charge, hyperfine pour la latence.
  • Niveau : intermédiaire.
  • Temps estimé : 4 heures pour reproduire les benchmarks.

Critère 1 — Empreinte mémoire et CPU au démarrage

Solution RAM idle RAM avec 100k docs CPU idle
Meilisearch v1.10 45 Mo 320 Mo 0,5%
Typesense v0.27 72 Mo 410 Mo 0,8%
PostgreSQL 17 FTS 120 Mo (déjà présent) +180 Mo (index GIN) 0,3%
Elasticsearch 8.x 1,8 Go 2,4 Go 2%

Verdict : Postgres FTS gagne en empreinte (mutualisée avec la base existante). Meilisearch légèrement devant Typesense.

Critère 2 — Latence p95 sur recherche simple

Requête « pagne wax indigo », dataset 100 000 produits :

Solution p50 p95 p99
Meilisearch 8 ms 22 ms 38 ms
Typesense 11 ms 28 ms 45 ms
Postgres FTS (GIN + tsvector) 14 ms 52 ms 120 ms
Postgres pg_trgm (similarité) 32 ms 180 ms 450 ms

Critère 3 — Typo-tolérance native

Requête « cassrole » (au lieu de casserole), dataset 100 000 produits dont 12 contiennent « casserole ».

  • Meilisearch : 12/12 résultats retournés, score adapté. Configuration : zéro effort, c’est le défaut.
  • Typesense : 12/12, configuration similaire.
  • Postgres FTS : 0/12 sans pg_trgm. Avec pg_trgm, 8/12 mais latence x4.

Critère 4 — Support multilingue (FR + AR + EN)

Indexation d’un dataset bilingue français/arabe (50 000 entrées) :

  • Meilisearch : tokenisation correcte des deux langues sans config. Stop words FR appliqués automatiquement.
  • Typesense : équivalent, qualité similaire.
  • Postgres FTS : nécessite création de configurations dédiées par langue (CREATE TEXT SEARCH CONFIGURATION french_arabic). Configuration laborieuse.

Critère 5 — Courbe d’apprentissage

Temps moyen pour un développeur intermédiaire pour livrer une recherche fonctionnelle (indexation + frontend basique) :

  • Meilisearch + react-instantsearch : 4 à 6 heures.
  • Typesense + typesense-instantsearch-adapter : 6 à 8 heures.
  • Postgres FTS + custom UI : 12 à 20 heures.
  • Elasticsearch + custom UI : 30 à 50 heures.

Critère 6 — Coût total de possession sur 12 mois

Solution VPS Bandwidth Total annuel
Meilisearch (Hetzner CX23) 54 € 0 € 54 €
Typesense (Hetzner CX23) 54 € 0 € 54 €
Postgres FTS (mutualisé) 0 € (déjà là) 0 € 0 €
Algolia Build (1M recherches/mois) N/A N/A ~6 000 USD
Elasticsearch Cloud Standard N/A N/A ~3 600 USD

Critère 7 — Écosystème et maturité communautaire

  • Meilisearch : 47 000 stars GitHub, 250+ contributeurs, release mensuelle, SDK officiels en JS, Python, Go, Ruby, PHP, Swift, Dart, Rust. Discord actif avec 8 000 membres.
  • Typesense : 21 000 stars, 80 contributeurs, releases trimestrielles, SDK JS, Python, PHP, Java, Go, Ruby. Communauté plus modeste.
  • Postgres FTS : intégré au cœur de PostgreSQL depuis 2007, infiniment stable. Pas de SDK dédié — manipule du SQL.

Critère 8 — Cas d’usage où chacun brille

Meilisearch est le meilleur choix quand : recherche e-commerce, blog, documentation, multilingue FR/AR, équipe sans expert recherche, budget infrastructure < 30 €/mois, temps de mise en place limité.

Typesense est le meilleur choix quand : vous appréciez son API plus stricte avec types explicites, vous avez besoin de geo-search avancée (rayon, polygones), vous travaillez avec un ORM TypeScript et préférez la rigueur de schéma.

Postgres FTS est le meilleur choix quand : volume modeste (< 50 000 documents), recherches monolingues simples, équipe SQL expérimentée, contraintes infrastructure (1 seul VPS), vous voulez zéro service supplémentaire.

Algolia est le meilleur choix quand : startup early-stage avec budget illimité, équipe < 3 développeurs, externalisation complète de la recherche, intégration au-dessus du capable.

Elasticsearch est le meilleur choix quand : vous faites de l’observability (logs + recherche), équipe DevOps confirmée, datasets > 100M documents, besoin d’agrégations complexes (aggregations, percentiles, time-series).

Verdict pour les PME ouest-africaines en 2026 (informations vérifiées en avril 2026, susceptibles d’évoluer)

Pour 80% des projets web (e-commerce, blog, annuaire, marketplace, documentation) : Meilisearch. Empreinte minimale, zéro configuration multilingue, latence excellente, écosystème mature. Coût annuel < 60 €.

Pour les projets monolingues simples avec < 30 000 entrées : Postgres FTS. Pas de service supplémentaire, gratuit, suffisant.

Pour les projets enterprise avec budget important : Algolia reste imbattable en expérience développeur, ou Elasticsearch si vous faites aussi de l’observability.

Erreurs fréquentes dans le choix

Erreur Cause Solution
Choix d’Elasticsearch pour 5000 produits Sur-ingénierie Postgres FTS suffit largement
Choix d’Algolia sans budget Coût explose à scale Meilisearch dès la conception
Postgres FTS pour multilingue lourd Configuration cauchemardesque Meilisearch ou Typesense
Meilisearch pour observability logs Pas son cas d’usage Loki + Grafana ou Elasticsearch
Typesense pour multilingue arabe Tokenisation moins fine que Meilisearch sur AR Meilisearch pour datasets arabophones

Ce que les retours d’expérience locaux ajoutent

Trois critères supplémentaires importants pour les PME africaines. Hébergement souverain : Meilisearch et Typesense s’auto-hébergent en Europe (Hetzner Allemagne) ou en Afrique (Africa Data Centres Johannesburg). Algolia est uniquement hébergé en US/EU/Asia, sans option africaine. Paiement en monnaie locale : Hetzner et OVH facturent en euros payables par carte africaine. Algolia facture en USD avec des frais de change qui plombent les marges. Conformité réglementaire : la loi marocaine 09-08 et la CDP sénégalaise exigent souvent que les données restent sur le territoire ou en zone offrant protection adéquate (UE). Meilisearch auto-hébergé répond directement à cette exigence.

Articles connexes

FAQ

Meilisearch peut-il vraiment remplacer Algolia en production ? Oui. Plusieurs entreprises (Bookzilla, Hopin, Atos) ont migré sans regret. Compter une économie de 90 à 95% sur la facture de recherche.

Postgres FTS est-il viable pour 100 000 documents ? Techniquement oui. Pratiquement, la latence p99 dépasse 100 ms, les utilisateurs ressentent. Au-delà de 50 000 documents, basculer sur Meilisearch.

Faut-il auto-héberger ou prendre du SaaS ? Auto-héberger Meilisearch ou Typesense pour < 50 € de différence annuelle face au SaaS. Sauf si l'équipe ne sait pas administrer un VPS, auquel cas SaaS est plus rentable globalement.

Qu’en est-il de la migration future ? Tous les moteurs supportent l’export JSON. Migrer Meilisearch → Typesense ou inverse prend 1 journée. Migrer vers/depuis Algolia est trivial via les SDK instantsearch compatibles.

Meilisearch supporte-t-il la recherche vectorielle (sémantique) ? Oui depuis v1.6 (mode expérimental), v1.10 stable. Combinable avec recherche texte classique pour des résultats hybrides excellents.

Pour creuser ce sujet

Étape 1 : poser le besoin de recherche réel avant de choisir

Les trois moteurs (Meilisearch, Typesense, PostgreSQL Full-Text Search) ne servent pas exactement le même cas d’usage. Avant de comparer, listez vos besoins : tolérance aux fautes de frappe, autocomplete instantané, recherche multilingue (français, anglais, wolof translittéré), tri par pertinence personnalisé, facettes, latence cible (sous 50 ms ou non).

Notez aussi le volume de documents (10 000 ou 10 millions), le débit attendu (100 ou 10 000 requêtes par seconde) et le budget infrastructure (un VPS Hostinger à 4 euros par mois ou un cluster managé à 200 euros par mois). Ces paramètres orientent la décision de manière plus utile que les benchmarks marketing.

Étape 2 : tester PostgreSQL Full-Text Search en premier

Si votre application stocke déjà ses données dans PostgreSQL, commencez par activer le FTS natif. Aucune infrastructure supplémentaire à déployer, aucun coût additionnel. Pour un catalogue de 100 000 produits, la latence reste sous 50 ms avec un index GIN.

ALTER TABLE products ADD COLUMN search_vector tsvector;
UPDATE products SET search_vector = to_tsvector('french', title || ' ' || description);
CREATE INDEX idx_search ON products USING GIN(search_vector);
SELECT * FROM products WHERE search_vector @@ plainto_tsquery('french', 'ordinateur portable');

La requête retourne les résultats en quelques millisecondes. Pour le freelance ouest-africain qui héberge sur un VPS unique, c’est souvent la meilleure option. Pas de service supplémentaire à monitorer, pas de synchronisation à gérer.

Étape 3 : repérer les limites de PostgreSQL FTS

PostgreSQL FTS gère mal trois choses : la tolérance aux fautes de frappe (typo-tolerance), l’autocomplete avec suggestions instantanées et le ranking personnalisé par champ. L’extension pg_trgm ajoute un peu de typo-tolerance avec la similarité, mais reste loin de Meilisearch ou Typesense sur ce point.

Si votre cas d’usage exige qu’un utilisateur tapant « gimbal » trouve « guimbal » ou « djimbal », PostgreSQL ne suffira pas. Idem pour un autocomplete de moins de 30 ms perçu comme instantané. C’est le moment de regarder un moteur dédié.

Étape 4 : essayer Meilisearch pour la simplicité

Meilisearch (version stable 1.11 en 2026) brille par sa simplicité. Un seul binaire, configuration minimale, typo-tolerance par défaut, recherche dans les sept premières lettres tapées sans configuration. Idéal pour un MVP ou un site e-commerce de freelance qui veut une recherche pro sans complexité.

curl -L https://install.meilisearch.com | sh
./meilisearch --master-key="votre_clé" --http-addr 0.0.0.0:7700

Le service démarre en moins de 5 secondes. Vous indexez vos documents via l’API REST en JSON. La consommation mémoire est raisonnable (quelques centaines de Mo pour 100 000 documents). Sur un VPS à 8 euros par mois, c’est largement suffisant pour la plupart des projets.

Étape 5 : comparer Typesense pour la performance brute

Typesense est l’alternative open source de Meilisearch, écrite en C++. Il vise la performance pure et le contrôle fin du ranking. Les benchmarks publiés par les deux équipes montrent des résultats proches en latence sur des datasets de moins d’un million de documents.

docker run -p 8108:8108 -v/tmp/typesense-data:/data \
  typesense/typesense:27.1 --data-dir /data \
  --api-key=xyz --enable-cors

Typesense propose un cluster multi-nœuds en open source (contrairement à Meilisearch qui le réserve à la version Cloud). Si la haute disponibilité est non négociable et le budget cloud limité, Typesense gagne souvent ce critère.

Étape 6 : indexer un échantillon de vos vraies données

Aucun benchmark synthétique ne remplace un test sur vos données. Exportez 10 000 documents représentatifs de votre application, indexez-les dans les trois moteurs, puis lancez 100 requêtes typiques de vos utilisateurs. Mesurez la latence p50 et p99, la pertinence des cinq premiers résultats et la consommation mémoire.

Pour un blog tech francophone, les requêtes typiques seront « tutoriel docker », « kubernetes secrets », « git rebase merge ». Pour un site e-commerce de Dakar, ce sera « ordinateur portable Dell », « casque sans fil », « écran 27 pouces ». Ce test pratique révèle les forces réelles de chaque moteur sur votre cas.

Étape 7 : peser les coûts d’infrastructure

PostgreSQL FTS coûte zéro euro de plus si la base existe déjà. Meilisearch et Typesense exigent un service supplémentaire : sur un VPS dédié, comptez 5 à 15 euros par mois (3 300 à 9 800 FCFA). Sur un service managé (Meilisearch Cloud, Typesense Cloud), comptez 30 à 200 euros par mois selon le tier.

Pour un freelance à Dakar qui démarre, le VPS est rentable. Pour une équipe SaaS qui veut zéro maintenance, le managed cloud libère du temps. Posez le calcul à 12 mois en intégrant le coût de votre temps : une heure de devops à 50 euros vs un service managé à 30 euros par mois change vite l’équation.

Étape 8 : décider selon une grille simple

Voici une grille pragmatique : moins de 50 000 documents et données déjà dans PostgreSQL = PostgreSQL FTS. Plus de 50 000 documents avec besoin de typo-tolerance et autocomplete = Meilisearch ou Typesense. Besoin de cluster HA open source = Typesense. Recherche avec ranking complexe et facettes riches = Typesense. Setup minimal et UX par défaut = Meilisearch.

Cette grille couvre 80 % des situations rencontrées par les développeurs ouest-africains. Pour les cas frontière (recherche vectorielle, RAG sur LLM), regardez vers Qdrant ou Weaviate, sujets traités dans nos guides Qdrant et recherche vectorielle et pgvector pour RAG sur PostgreSQL.

Étape 9 : sécuriser l’accès au moteur en production

Quel que soit le moteur retenu, l’erreur classique consiste à exposer publiquement l’API d’administration. Meilisearch et Typesense distinguent une clé maître (admin) et des clés API restreintes (lecture seule, scoped). En production, ne jamais exposer la clé maître côté client.

curl -X POST 'http://localhost:7700/keys' \
  -H 'Authorization: Bearer master_key' \
  -H 'Content-Type: application/json' \
  --data-binary '{
    "actions": ["search"],
    "indexes": ["produits"],
    "expiresAt": "2027-01-01T00:00:00Z"
  }'

La clé restreinte renvoyée s’utilise dans le frontend sans risque. Pour PostgreSQL FTS, créez un rôle dédié en lecture seule sur la table indexée et limitez ses droits via GRANT. Cette discipline est non négociable, surtout si votre VPS est exposé sur Internet.

Étape 10 : prévoir la synchronisation des données

Avec Meilisearch ou Typesense, vos données vivent en double : dans PostgreSQL (source de vérité) et dans le moteur de recherche (index). Synchronisez via un trigger PostgreSQL + LISTEN/NOTIFY, via Debezium (CDC) ou via une queue (Redis Streams, RabbitMQ). Le choix dépend du volume.

Pour moins de 10 mises à jour par seconde, un cron toutes les cinq minutes qui pousse les changements suffit. Au-delà, optez pour le CDC en temps réel. Documentez le pipeline dans SYNC.md du projet : c’est un livrable précieux et un argument de vente pour vos prochains contrats à Dakar ou Abidjan.

Partager