Menu

Postgres Full-Text Search vs Elasticsearch vs Meilisearch: BM25 Benchmarked (2026)
📰

Postgres Full-Text Search vs Elasticsearch vs Meilisearch: BM25 Benchmarked (2026)

DEV Community: postgres·Waseem Anjum·about 6 hours ago
#Jqv4Vsqb
Reading 0:00
15s threshold

Cross-posted from my blog. The original, with any updates, lives on fabwaseem.com .

Postgres full-text search can now rank results as well as Elasticsearch, as long as you use a BM25 extension instead of the built-in ts_rank . I loaded three public BEIR retrieval datasets (5,183 to 171,332 documents) into five setups on one box: built-in tsvector , ParadeDB's pg_search , Timescale's pg_textsearch , Elasticsearch 9.5.5 and Meilisearch 1.55.0. Then I scored every engine with the datasets' own relevance judgments.

The short version: both Postgres BM25 extensions landed within about 0.05 nDCG@10 of Elasticsearch on every dataset, answered faster in my setup, and made new rows searchable in 2-4 ms instead of about 700 ms. The built-in tsvector search returned nothing at all for 274 of 300 natural-language queries with its default AND matching.…

Continue reading — create a free account

Join HashtagPLUS to read full articles, follow hashtags, vote, and join the conversation.