Show HN: How This Graybeard Built the Fastest and Freest Postgres BM25 Search

Veteran dev drops free, blazing DB search; fans swoon, nitpickers pounce, license fight erupts

TLDR: A veteran engineer launched pg_textsearch, a free tool that adds Google‑style ranking inside Postgres for fast, simple search. Commenters cheered ditching extra search servers but debated missing filter‑then‑sort, big‑dataset indexing times, and veered into spicy AGPL licensing shade—making this both a tech win and a drama magnet.

Call him a graybeard, call him a wizard: a veteran dev just dropped pg_textsearch, a free add‑on that brings Google‑style BM25 ranking (a way to score how well text matches your search) right inside your database. The pitch: one‑liner queries, language‑aware results, and speed tricks under the hood—fast, free, production‑ready.

The comments instantly turned it into a spectacle. jascha_eng vouched for the builder—“not your average vibe coder”—then casually revealed he once torched $3,000 in API credits, birthing the meme of the day: the fastest index money can buy. Others cheered the end of bolting on separate search servers; one dev called it a huge win for RAG (tools that fetch and rerank text for AI answers) without extra infrastructure.

But the nitpickers came ready. simonw loved the idea yet flagged a gap: how to filter first (only match some documents) and then sort by relevance—crucial for real‑world queries. Another builder asked for proof on the slowest part of many systems: indexing millions of rows. Show us benchmarks before we rip out Elasticsearch, pleaded the pragmatists.

And then came the side quest: license drama. One commenter blasted a rival’s AGPL license and even called out “TigerData” by name—pure open‑source soap opera. Verdict? Excitement, questions, and spicy politics—all orbiting a tapir‑mascot project aiming to make search inside Postgres both fast and free. Also, yes, the creator really is a graybeard—receipts.

Key Points

  • pg_textsearch v1.0.0 adds BM25 ranked text search to PostgreSQL with a simple <@> operator and configurable parameters.
  • Supports PostgreSQL 17 and 18, with prebuilt binaries for Linux and macOS (amd64, arm64) and source builds via Timescale’s repo.
  • Implements Block‑Max WAND for fast top‑k retrieval, parallel index builds, and support for partitioned tables.
  • Requires shared_preload_libraries; provides automatic index detection and an explicit to_bm25query() for index specification.
  • Outlines pre‑filtering vs. post‑filtering strategies, recommending selective pre‑filtering plus ORDER BY + LIMIT for best performance.

Hottest takes

TJ is not your average vibe coder — jascha_eng
filter for just documents matching terms X and Y, then sort by BM25 relevance — simonw
clear signal that "TigerData" is a pernicious entity — gplprotects
Made with <3 by @siedrix and @shesho from CDMX. Powered by Forge&Hive.