tadata
← Retour à l'accueil

La recherche dans votre produit en 2026 : Postgres, Meilisearch, Typesense, OpenSearch ou un hybride

#architecture#databases#data-engineering#open-source#tools

La recherche est la fonction que les utilisateurs jugent en une demi-seconde et dans laquelle les ingénieurs sous-investissent pendant des années. Le paysage 2026 compte quatre familles crédibles : la recherche plein texte dans Postgres (le tsvector intégré, ou BM25 via pg_search 0.26 de ParadeDB), les moteurs légers conçus pour les résultats instantanés (Meilisearch 1.55, Typesense 30), le cluster poids lourd (OpenSearch 3.9, Elasticsearch), et les montages hybrides qui fusionnent résultats lexicaux et vectoriels. Cet article les compare sur les critères qui décident d'une recherche produit, montre ce que les recherches lexicale et sémantique manquent chacune, et donne une clé de décision et un score pondéré à rejouer avec vos propres poids.

Ce que chaque famille fait bien

tadata
Criterion Weight Postgres FTS Postgres +pg_search Meilisearch Typesense OpenSearch Pertinence sans réglage ×3 2 4 4 4 3 Tolérance aux fautes etrésultats instantanés ×3 1 3 5 5 3 Facettes et filtres ×2 2 4 4 5 5 Échelle (dizaines de millions dedocuments) ×2 2 3 3 3 5 Simplicité d'exploitation ×3 5 4 4 4 1 Cohérence transactionnelle avecl'application ×2 5 5 2 2 1 Hybride (lexical + vectoriel) ×2 3 4 4 4 5 Licence ×1 5 2 5 3 5 Weighted total 53 59 % 67 74 % 70 78 % ✓ tie 70 78 % ✓ tie 58 64 %
Criterion Weight Postgres FTS Postgres +pg_search Meilisearch Typesense OpenSearch Pertinence sans réglage ×3 2 4 4 4 3 Tolérance aux fautes etrésultats instantanés ×3 1 3 5 5 3 Facettes et filtres ×2 2 4 4 5 5 Échelle (dizaines de millions dedocuments) ×2 2 3 3 3 5 Simplicité d'exploitation ×3 5 4 4 4 1 Cohérence transactionnelle avecl'application ×2 5 5 2 2 1 Hybride (lexical + vectoriel) ×2 3 4 4 4 5 Licence ×1 5 2 5 3 5 Weighted total 53 59 % 67 74 % 70 78 % ✓ tie 70 78 % ✓ tie 58 64 %

Les scores sont notre lecture au 19 octobre 2026 (la colonne value est le poids que nous donnerions pour un SaaS B2B type ; changez-la pour le vôtre). Licences : Postgres et OpenSearch permissives, Meilisearch MIT, Typesense GPLv3, ParadeDB AGPLv3 avec une offre commerciale. Versions relevées sur les pages de publication : Meilisearch 1.55.0 (12 octobre), Typesense 30.2, OpenSearch 3.9.0, ParadeDB 0.26.2 (16 octobre).

Lexical et sémantique manquent des choses différentes

tadata
Le lexical (BM25) trouve Le sémantique (vecteurs) trouve Comment résilier unabonnementFrais derésiliationComparatif desabonnements (faux) Annuler unefacture (faux)Rétrograder oumettre fin à unabonnement Ne plus êtreprélevéSupprimer moncompteSuspendre lafacturation un mois Politique de remboursement (les deux la manquent ; les utilisateurs la voulaient) Résultats pour la requête « résilier mon abonnement » dans un centre d'aide
Le lexical (BM25) trouve Le sémantique (vecteurs) trouve Comment résilier unabonnementFrais derésiliationComparatif desabonnements (faux) Annuler unefacture (faux)Rétrograder oumettre fin à unabonnement Ne plus êtreprélevéSupprimer moncompteSuspendre lafacturation un mois Politique de remboursement (les deux la manquent ; les utilisateurs la voulaient) Résultats pour la requête « résilier mon abonnement » dans un centre d'aide

La recherche lexicale est précise sur le vocabulaire et aveugle au sens : elle trouve « frais de résiliation » et manque « ne plus être prélevé ». La recherche vectorielle est l'inverse : elle trouve l'intention et fait remonter « supprimer mon compte » quand l'utilisateur voulait garder son compte. Les deux se recouvrent sur la meilleure réponse, c'est pourquoi la recherche hybride, qui fusionne les deux listes classées (fusion de rangs réciproques, ou score pondéré), bat chacune seule sur la plupart des corpus produit, et pourquoi tous les moteurs du tableau la proposent désormais : Meilisearch avec un ratio sémantique, Typesense qui pondère le rang lexical à 70 % par défaut, OpenSearch avec normalisation des scores ou fusion de rangs, Postgres avec pgvector plus BM25 dans une seule requête SQL.

La latence est une distribution, pas un nombre

tadata
0 ms 100 ms 200 ms 300 ms 400 ms 500 ms Postgres FTS,index GIN Postgres FTS, index GIN: median 24 ms 24 ms Postgres +pg_search (BM25) Postgres + pg_search (BM25): median 11 ms 11 ms Meilisearch Meilisearch: median 7 ms 7 ms Typesense Typesense: median 6 ms 6 ms OpenSearch (1shard) OpenSearch (1 shard): median 15 ms 15 ms Hybride (fusionné) Hybride (fusionné): median 40 ms 40 ms paraît instantané 100 ms Latence des requêtes, 2 millions de fiches (ms, illustratif)
0 ms 100 ms 200 ms 300 ms 400 ms 500 ms Postgres FTS,index GIN Postgres FTS, index GIN: median 24 ms 24 ms Postgres +pg_search (BM25) Postgres + pg_search (BM25): median 11 ms 11 ms Meilisearch Meilisearch: median 7 ms 7 ms Typesense Typesense: median 6 ms 6 ms OpenSearch (1shard) OpenSearch (1 shard): median 15 ms 15 ms Hybride (fusionné) Hybride (fusionné): median 40 ms 40 ms paraît instantané 100 ms Latence des requêtes, 2 millions de fiches (ms, illustratif)

Les médianes flattent tout le monde ; la queue est ce que l'utilisateur ressent à la troisième frappe d'une recherche en temps réel. Les moteurs instantanés gardent le p99 sous 100 ms parce qu'ils tiennent l'index en mémoire (Typesense entièrement, Meilisearch en grande partie) et font la tolérance aux fautes à l'indexation. La queue de Postgres vient des revérifications de l'index GIN et du partage de la machine avec l'application ; pg_search la réduit. L'hybride coûte un appel d'embedding plus deux récupérations, ce qui convient à une page de résultats et reste trop lent pour la frappe en direct, sauf si la partie lexicale répond d'abord.

Lequel, en six questions

tadata
OpenSearch (ouElasticsearch) : uncluster, une équipe, etles fonctions qui vontavec Postgres + pg_search(ParadeDB), pgvector pourla moitié sémantique Recherche plein texteintégrée de Postgres :tsvector, index GIN,websearch_to_tsquery Avez-vous besoin de pertinenceBM25, de facettes et de toléranceaux fautes ? Typesense (GPLv3) ouMeilisearch (MIT) :choisir sur la licence etl'hébergement Meilisearch : son indexpeut dépasser la RAM ; ouOpenSearch si lacroissance continue L'index tient-il confortablementen RAM (moins de quelques dizainesde Go) ? La recherche intégrée dePostgres suffit ; ajoutezun moteur quand lesutilisateurs se plaignent S'agit-il d'une recherche en tempsréel sur un produit, un catalogueou un centre d'aide ? Les résultats doivent-ils êtrecohérents transactionnellementavec la base (aucun retard aprèsune écriture) ? Plus de 20 millions de documents,ou aussi de l'analytique derecherche et des journaux ? yes no yes yes no no yes yes no no
OpenSearch (ouElasticsearch) : uncluster, une équipe, etles fonctions qui vontavec Postgres + pg_search(ParadeDB), pgvector pourla moitié sémantique Recherche plein texteintégrée de Postgres :tsvector, index GIN,websearch_to_tsquery Avez-vous besoin de pertinenceBM25, de facettes et de toléranceaux fautes ? Typesense (GPLv3) ouMeilisearch (MIT) :choisir sur la licence etl'hébergement Meilisearch : son indexpeut dépasser la RAM ; ouOpenSearch si lacroissance continue L'index tient-il confortablementen RAM (moins de quelques dizainesde Go) ? La recherche intégrée dePostgres suffit ; ajoutezun moteur quand lesutilisateurs se plaignent S'agit-il d'une recherche en tempsréel sur un produit, un catalogueou un centre d'aide ? Les résultats doivent-ils êtrecohérents transactionnellementavec la base (aucun retard aprèsune écriture) ? Plus de 20 millions de documents,ou aussi de l'analytique derecherche et des journaux ? yes no yes yes no no yes yes no no

Une décision travaillée pour un SaaS B2B

tadata
Option Pertinenceet toléranceaux fautes 25 % Simplicitéd'exploitation 25 % Cohérenceavec la basedel'application 19 % Recherchehybride 19 % Licence etsortie 12 % Weighted total (/5) Meilisearch 5 4 2 4 5 4 best Postgres + pg_search + pgvector 4 4 5 4 2 3.94 Postgres FTS intégré 2 5 5 3 5 3.88 Typesense 5 4 2 4 3 3.75 OpenSearch 4 1 1 5 5 3 Centre d'aide plus recherche dans l'application, 3 millions de documents,équipe de quatre ingénieurs
Option Pertinenceet toléranceaux fautes 25 % Simplicitéd'exploitation 25 % Cohérenceavec la basedel'application 19 % Recherchehybride 19 % Licence etsortie 12 % Weighted total (/5) Meilisearch 5 4 2 4 5 4 best Postgres + pg_search + pgvector 4 4 5 4 2 3.94 Postgres FTS intégré 2 5 5 3 5 3.88 Typesense 5 4 2 4 3 3.75 OpenSearch 4 1 1 5 5 3 Centre d'aide plus recherche dans l'application, 3 millions de documents,équipe de quatre ingénieurs

Pour cette équipe, les deux premiers se tiennent à un point, ce qui est l'issue habituelle : Meilisearch pour la meilleure expérience de recherche avec un service de plus à exploiter, Postgres avec pg_search pour une pièce mobile de moins et aucun code de synchronisation. L'arbitrage est rarement technique : c'est de savoir si l'équipe veut posséder un pipeline d'indexation (capture des changements ou double écriture, réindexation aux changements de schéma, une alerte d'index périmé) ou préfère le payer en latence de requête.

Le compromis en une image

tadata
Pas de pipeline desynchronisation, pas d'indexpérimé 4 Une sauvegarde, un modèled'accès 3 Jointures et permissions dansla même requête 3 Garder la recherche dans Postgres weight 10 Tolérance aux fautes etrésultats instantanés 4 Facettes et règles declassement sans gymnastiqueSQL 3 Isolation : la charge derecherche ne ralentit jamaisl'application 3 Index multi-locataires etlimites par locataireintégrés 2 Exploiter un moteur dédié weight 12 Exploiter un moteur dédié outweighs (12 vs 10)
Pas de pipeline desynchronisation, pas d'indexpérimé 4 Une sauvegarde, un modèled'accès 3 Jointures et permissions dansla même requête 3 Garder la recherche dans Postgres weight 10 Tolérance aux fautes etrésultats instantanés 4 Facettes et règles declassement sans gymnastiqueSQL 3 Isolation : la charge derecherche ne ralentit jamaisl'application 3 Index multi-locataires etlimites par locataireintégrés 2 Exploiter un moteur dédié weight 12 Exploiter un moteur dédié outweighs (12 vs 10)

En résumé

Commencez dans Postgres : la recherche plein texte intégrée couvre plus de produits que les ingénieurs ne le pensent, et pg_search ajoute la pertinence BM25 et les facettes sans quitter la base. Passez à Meilisearch ou Typesense quand les utilisateurs tapent et attendent des réponses sous la frappe, et à OpenSearch quand le corpus ou l'analytique exigent un cluster. Quel que soit le moteur, rendez-le hybride : fusionnez résultats lexicaux et vectoriels, parce que les deux manquent des choses différentes. Nos articles sur la recherche vectorielle et le RAG et l'optimisation des bases de données couvrent la moitié sémantique et le réglage de Postgres.

Sources : pages de publication de Meilisearch, Typesense, OpenSearch et ParadeDB (lues le 19 octobre 2026) ; documentation des projets sur la recherche hybride ; notre banc d'essai pour les distributions de latence, qui illustrent une forme plutôt qu'un benchmark.

Nous utilisons des cookies analytiques pour améliorer votre expérience. Aucune donnée personnelle n'est collectée.