pg_textsearch

Data

postgres extension

SHOW HN2026

pg_textsearch

Postgres extension for BM25 relevance-ranked full-text search

github.com

#bm25#postgres full-text search#hybrid search#relevance ranking

203points
56comments
#288of 4,366 in 2026
Top 7%of 2026 by points

How HN took it

LovedMost comments that take a side are positive

18 positive, 12 neutral or asking, 0 mixed, 3 critical, out of 33 comments about the project. Thread score +0.42.

Idea: 8 for, 0 againstExecution: 1 for, 1 againstPerformance: 2 for, 0 againstDesign: 0 for, 1 against

The thread, comment by comment

Each row is a top-level comment and its replies, in HN's order. Select a cell to open that comment on HN.

positive neutral or mixed critical about another commenter or something else the maker

What HN said

What people liked

  • Useful for hybrid search and RAG on Postgres

    From 3 comments
    • Very exciting! Congrats on the release, this will be a huge benefit to all folks building RAG/rerank systems on top of Postgres. Looking forward to testing it out myself.
      gmassman on HN
    • I've been doing some RAG prototypes with hybrid search using pg_textsearch plus pgvector and have been very pleased with the results. Happy to see a 1.0 release!
      maweaver on HN
    • This is pretty much my case right now. BM25 is so useful in many cases and having with with postgres is neat!
      3abiton on HN
  • Faster and more stable than ParadeDB in production

    From 2 comments
    • we have been using pg_textsearch in production for a few weeks now, and it's been fairly stable and super speedy. we used to use paradedb (aka pg_search -- it's quite annoying…
      diwank on HN
    • This is really cool to see! I've been using BM25+sqlite-vec for contextual search projects for a little while, it's a great performance addition.
      devmor on HN
  • Bringing BM25 into Postgres avoids a separate search engine

    From 2 comments
    • Nice work. pg_search has been on my radar for a while, having BM25 natively in Postgres instead of bolting on Elasticsearch is a huge DX win. Curious about the index build time…
      shreyssh on HN
    • “Just use Postgres” greybeards right again. Looking forward to giving this a go soon
      robotswantdata on HN

Objections

  • Only filters by term, no built-in WHERE-filtered BM25 ranking

    From 2 comments
    • This is really cool. I've built things on PostgreSQL ts_vector() FTS in the past which works well but doesn't have whole-index ranking algorithms so can't do BM25. It's a bit…
      simonw on HN
    • While we’re talking about filtering — is there a way to set a WHERE clause when you’re setting up the index? I’ve been working on this a lot recently for a hybrid vector search…
      mbreese on HN
  • Only supports Postgres 17 for now

    From 2 comments
    • Noticed it's only pg17, is that some hard dependency? Also why did you choose C for this and not rust, any specific reason? I see pgvectorscale is built on rust
      csenshi on HN
    • you need to explain claude code that PG18 is out already ;)
      samokhvalov on HN
  • Term positions limitation for phrase-style searches

    From 1 comment
    • The "term positions" caveat seems like a major limitation for human oriented searches of logs or products or whatever. I don't see it mentioned in what's next, will you address…
      kev009 on HN
  • Benchmark claims doubted

    From 2 comments

Requests

  • Managed cloud availability (Supabase, Aurora, GCP, Azure, Neon)

    From 5 comments
    • VERY excited about this, literally just looking to build hybrid search using Postgres FTS. When will this be available on Supabase?
      jackyliang on HN
    • When is this available on AWS in Aurora? Anyone from AWS here, add it pronto
      timedude on HN
    • Please oh please let GCP add this to the supported managed Postgres extensions...
      mattbessey on HN
    • And Azure Flexible server please
      rickette on HN
    • I hope someone from Neon is watching this thread, definitely want to play with this asap
      hmokiguess on HN
  • Pluggable tokenizer or CJK support

    From 2 comments
    • CJK tokenization is one of those things that looks simple until you actually try it. Japanese alone needs morphological analysis (MeCab etc.) because there are no word boundaries…
      derodero24 on HN
    • Interesting timing — we've been tackling similar full-text search challenges over Japanese financial filings (roughly 9M+ sections from annual reports). The tokenization problem…
      edinetdb on HN
  • Expression or filtered indexes

    From 1 comment
    • Partitions would be one option, and we've got pretty robust partitioned table support in the extension. (Timescaledb uses partitioning for hypertables, so we had to front-load…
      tjgreen on HN
  • Better high-frequency write performance

    From 1 comment
    • Impressive benchmarks. How does the BM25 implementation handle high-frequency updates (writes) while maintaining search latency? Usually, there's a trade-off between ingest speed…
      Unical-A on HN

Questions

  • How does it handle high-frequency writes?

    From 1 comment
    • Impressive benchmarks. How does the BM25 implementation handle high-frequency updates (writes) while maintaining search latency? Usually, there's a trade-off between ingest speed…
      Unical-A on HN
  • Index build time on larger datasets?

    From 1 comment
    • Nice work. pg_search has been on my radar for a while, having BM25 natively in Postgres instead of bolting on Elasticsearch is a huge DX win. Curious about the index build time…
      shreyssh on HN
  • Is a WHERE clause possible when creating the index?

    From 1 comment
    • While we’re talking about filtering — is there a way to set a WHERE clause when you’re setting up the index? I’ve been working on this a lot recently for a hybrid vector search…
      mbreese on HN

Alternatives named

  • ParadeDB pg_search

    From 2 comments
    • Nice work. pg_search has been on my radar for a while, having BM25 natively in Postgres instead of bolting on Elasticsearch is a huge DX win. Curious about the index build time…
      shreyssh on HN
    • we have been using pg_textsearch in production for a few weeks now, and it's been fairly stable and super speedy. we used to use paradedb (aka pg_search -- it's quite annoying…
      diwank on HN
  • pgvector with hybrid search

    From 1 comment
    • I've been doing some RAG prototypes with hybrid search using pg_textsearch plus pgvector and have been very pleased with the results. Happy to see a 1.0 release!
      maweaver on HN
  • Elasticsearch

    From 1 comment
    • Nice work. pg_search has been on my radar for a while, having BM25 natively in Postgres instead of bolting on Elasticsearch is a huge DX win. Curious about the index build time…
      shreyssh on HN
  • Tantivy

    From 1 comment
    • Last summer we faced a conundrum at my company, Tiger Data, a Postgres cloud vendor whose main business is in timeseries data. We were trying to grow our business towards…
      tjgreen on HN

Category, keywords, summaries and labels on this page were made by AI (Thread Reader v2) and not checked by hand. Each point links to the comments it came from.

Add a badge to your READMEShown on HackerShow
[![Shown on HackerShow](https://hackershow.org/badge.svg)](https://hackershow.org/show/47589856)