---
title: "pg_textsearch 1.0 brings production-ready BM25 to Postgres"
publication: "Postgres Weekly"
issue: 642
published_at: "2026-04-01"
canonical_url: "https://postgresweekly.com/issues/642"
---

Plus the elegance of pg_service.conf, COPY to JSON in Postgres 19, and absolutely no April Fools jokes!        

#​642 — April 1, 2026 

[Web Version](https://postgresweekly.com/issues/642)  

Together with [![Tiger Data logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_1280,h_282/e_make_transparent/co_white,e_outline:30/px1u7kjyvz7xnbm6ytir.png)](https://www.tigerdata.com/timescaledb?utm_source=cooperpress&utm_medium=referral&utm_campaign=postgres-weekly-newsletter)   

Postgres Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/lyjxqudhjidan4ihgpuy.jpg)](https://www.tigerdata.com/blog/pg-textsearch-bm25-full-text-search-postgres)  

[pg_textsearch 1.0: A BM25 Search Engine Using Postgres Pages](https://www.tigerdata.com/blog/pg-textsearch-bm25-full-text-search-postgres) — Real [BM25 scoring](https://en.wikipedia.org/wiki/Okapi_BM25) built in C and running on top of Postgres’s own storage layer, so you can create indexes, write queries, and get relevance-ranked results out of the box. v1.0 takes things from preview to production with parallel index builds and disk-based segments (rather than memory only, as in pre-1.0). [GitHub repo.](https://github.com/timescale/pg_textsearch) 

Todd J. Green (Tiger Data)   

💡 Other BM25-based options are available, including [ParadeDB](https://www.paradedb.com/learn/search-in-postgresql/bm25) (which uses [Tantivy](https://github.com/quickwit-oss/tantivy) behind the scenes) and [VectorChord-BM25.](https://blog.vectorchord.ai/postgresql-full-text-search-fast-when-done-right-debunking-the-slow-myth) A head-to-head comparison and benchmark of them would be great to see.  [![\](https://res.cloudinary.com/cpress/image/upload/c_limit,w_480,h_480,q_auto/copm/b0fdf751.png)](https://www.tigerdata.com/timescaledb?utm_source=cooperpress&utm_medium=referral&utm_campaign=postgres-weekly-newsletter) 

[Most Teams Hit a Wall With Analytics on Postgres](https://www.tigerdata.com/timescaledb?utm_source=cooperpress&utm_medium=referral&utm_campaign=postgres-weekly-newsletter) — Postgres can scale analytics. It just needs help. Instead of a second database, add TimescaleDB: hypertables, 95% compression, and continuous aggregates. No pipelines, no sync lag, no drift. Analytics on live data. Start building for free. 

Tiger Data (creators of TimescaleDB) sponsor   

[High Memory Usage in Postgres is Good, Actually](https://planetscale.com/blog/high-memory-usage-in-postgres-is-good-actually) — High memory _usage_ in Postgres is often a sign the system is simply doing its job, keeping frequently accessed data close at hand. The thing to worry about is _memory pressure_, and Simeon explains how to tell the two apart. 

Simeon Griggs (PlanetScale)   

**IN BRIEF:** 

- 🇦🇹 Microsoft's Cornelia Biacsics tells the story of [how she organized a Postgres meetup in Vienna](https://cornelia-biacsics.medium.com/my-first-self-organized-postgresql-meetup-in-vienna-49445d7393a3) last week. Might be inspirational if you want to do the same in your city.
- Amazon Aurora PostgreSQL is [now available on the AWS Free Tier.](https://aws.amazon.com/about-aws/whats-new/2026/03/amazon-aurora-postgresql-aws-free-tier/)
- ♟️ Can you [use SQL to render a chess board](https://www.dbpro.app/blog/chess-in-pure-sql) and move pieces around it? A neat interactive exploration of what's involved.   

[Postgres 19 Adding Built-in JSON Export via `COPY`](https://www.depesz.com/2026/03/29/waiting-for-postgresql-19-json-format-for-copy-to/) — In the next version of Postgres, `COPY ... TO ... WITH JSON` will let you export query results or table data directly as a stream of JSON objects. 

Hubert Lubaczewski   

[`pg_service.conf`: The Spell Your Team Forgot to Learn](https://mydbanotebook.org/posts/pg_service.conf-the-spell-your-team-forgot-to-learn/) — [`pg_service.conf`](https://www.postgresql.org/docs/current/libpq-pgservice.html) is a bit like `ssh`’s `config` file in that it lets you bundle together connection parameters into a single service name, so you can do things like `psql service=prod`. A further cute trick is to have different files for each environment and switch between them while keeping your logical names the same. 

Lætitia Avrot   

[The Real Cost of Random I/O](https://vondra.me/posts/the-real-cost-of-random-io/) — Is the `random_page_cost` default of 4.0 still right after 25 years? Vondra runs controlled experiments with direct I/O on flash storage and finds the answer is more nuanced than _“just set it to 1.0.”_ 

Tomas Vondra   

📄 [The Hidden Behavior of `plan_cache_mode`](https://richyen.com/postgres/2026/03/30/plan_cache_mode.html) – Did you know the query planner can change the execution plan for a prepared statement after several executions? Richard Yen 

📄 [A Survey of Database Schema Migration Approaches in 2026](https://ardentperf.com/2026/03/25/database-schema-migrations-in-2026-survey/) Jeremy Schneider 

▶️ [How to Implement the Outbox Pattern in Go and Postgres](https://www.youtube.com/watch?v=hJ4S-5MirvU) Package Main       

📰 Classifieds   

Spot N+1 queries before your users do. AppSignal auto-monitors Postgres performance with real-time alerts. [Try Free.](https://www.appsignal.com/?utm_source=newsletter&utm_medium=paid&utm_campaign=postgresweekly&utm_term=3-27&utm_content=classified) 

--- 

👾 A conference for engineers who did the big rewrite - and lived to tell the story. [BugBash](https://antithesis.com/bugbash/conference2026/) 2026, April 23-24, Washington DC.      

**RELEASES AND CODE:**   

[pgmetrics: Collect and Report Stats from Running Postgres Servers](https://pgmetrics.io/) — A Go app (so no dependencies) that collects over 350 different metrics and produces [reports like this one.](https://pgmetrics.io/docs/index.html#example) As well as being useful at a glance, the format is perfect for LLMs to analyze too. 

RapidLoop   

[`pg_regresql`: Truly Portable Postgres Statistics](https://boringsql.com/posts/regresql-extension/) — An extension that forces the planner to use `pg_class` statistics instead of reading actual file sizes, so that injected production statistics survive intact in a small dev/test database. 

Radim Marek   

[Multigres Operator: A Kubernetes Operator for Multigres](https://github.com/multigres/multigres-operator) — [Multigres](https://multigres.com/) is a Vitess-inspired horizontally-scalable/sharded Postgres architecture and this operator brings it into Kubernetes. Note that _“It is not production-ready as of today, but we’re moving fast - expect it to be ready in a few months.”_ 

Supabase   

- [pg_ivm 1.14](https://www.postgresql.org/about/news/pg_ivm-114-released-3265/) – Makes materialized views up-to-date using incremental changes.
- [pgschema 1.8](https://github.com/pgplex/pgschema) – Terraform-style declarative schema migrations for Postgres.
- [pg-boss 12.15.0](https://github.com/timgit/pg-boss) – Postgres-powered job queue for Node.js apps.    

**Got a new email?** You can [change your address here](https://postgresweekly.com/edit_subscription/*|UID|*). 

--- 

**Bored of us?** [Click here to stop getting Postgres Weekly](https://postgresweekly.com/leave/*|UID|*). 

--- 

**Got a link for us?** Reply and tell us. We can't include everything but we'll look at anything you send. _Thanks!_ 

--- 

Published by Cooper Press Ltd.
Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Postgres, PostgreSQL and the Slonik Logo are trademarks or registered trademarks of the PostgreSQL Community Association of Canada. 

[Stop getting this newsletter](https://postgresweekly.com/leave/*|UID|*).
