[{"data":1,"prerenderedAt":120},["ShallowReactive",2],{"project-45684443":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":15,"aspects":31,"strip":32,"post_text":33,"what":34,"said":68,"maker_in_thread":78,"shape":80,"grid":81,"attempts":82,"same_week":83,"maker_shows":112,"maker_hidden":113,"reader_version":114,"card":115},"45684443","Pg_textsearch","BM25 Ranking for Postgres","title","Show HN: Pg_textsearch – BM25 Ranking for Postgres","https:\u002F\u002Fdocs.tigerdata.com\u002Fuse-timescale\u002Flatest\u002Fextensions\u002Fpg-textsearch\u002F","docs.tigerdata.com","tjgreen",1761240331,2025,13,0,2487,3837,65,"shown","data","postgres extension","library",[24,25,26,27],"bm25 ranking","postgres full text search","rag retrieval","hybrid search","quiet",null,{"positive":15,"neutral":15,"mixed":15,"critical":15},{},[],"I built pg_textsearch, a Postgres extension that brings proper BM25 ranking to full-text search. It's designed for AI\u002FRAG workloads where search quality directly impacts LLM output.\n\nPostgres native ts_rank lacks corpus-aware signals (no IDF, no TF saturation, no length normalization). This causes mediocre documents to rank above excellent matches, which matters when your LLM depends on retrieval quality.\n\nQuick example:\n\n\n```\n  CREATE EXTENSION pg_textsearch;   CREATE INDEX articles_idx ON articles USING bm25(content);   SELECT title, content \u003C@> to_bm25query('database performance', 'articles",{"problem":35,"audience":41,"pricing":45,"motivation":49,"time_to_build":29,"stack":53,"openness":66,"stage":67,"team_size":66},{"value":36,"source":37,"evidence":38},"Postgres ts_rank lacks corpus-aware signals, so weaker documents can outrank better matches","maker",[39],{"id":40},"post",{"value":42,"source":37,"evidence":43},"Developers building RAG systems or hybrid search applications on Postgres",[44],{"id":40},{"value":46,"source":37,"evidence":47},"Free to try on Tiger Cloud",[48],{"id":40},{"value":50,"source":37,"evidence":51},"Wanted BM25 search available on managed Postgres, since ParadeDB's pg_search was not",[52],{"id":40},[54,58,62],{"value":55,"source":37,"evidence":56},"PostgreSQL",[57],{"id":40},{"value":59,"source":37,"evidence":60},"pgvector",[61],{"id":40},{"value":63,"source":37,"evidence":64},"pgvectorscale",[65],{"id":40},"unknown","beta",{"praise":69,"objections":70,"requests":71,"questions":72,"alternatives":73},[],[],[],[],[74],{"value":75,"source":37,"evidence":76},"ParadeDB pg_search",[77],{"id":40},{"comments":15,"answered":15,"key":79},[],{"commenters":15,"max_depth":15,"maker_replies":15,"first_comment_mins":29,"lifespan_hours":29},[],[],[84,89,94,99,104,108],{"id":85,"name":86,"points":87,"category":88},"45706792","oxdraw",266,"dev_tools",{"id":90,"name":91,"points":92,"category":93},"45715055","MyraOS",247,"infrastructure",{"id":95,"name":96,"points":97,"category":98},"45731366","Bash Screensavers",246,"creative",{"id":100,"name":101,"points":102,"category":103},"45684689","Deadstack",188,"productivity",{"id":105,"name":106,"points":107,"category":98},"45721352","ISS in Real Time",165,{"id":109,"name":110,"points":111,"category":88},"45717724","vite-plugin-use-golang",158,2,false,"v2",{"id":116,"name":5,"line":6,"ai":113,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":29,"top":18,"kw":117,"maker":11,"domain":10,"tier":19,"attempts":15,"strip":118,"url":9,"mix":119,"praise":-1,"objection":-1,"sub":21},45684443,[24,25,26,27],"",[15,15,15,15],1794036684612]