Introducing TIN: full-text search for Postgres
Blog post from PlanetScale
TIN, or Text INdex, is a generally available PostgreSQL extension for Postgres and Neki databases that provides full-text search through a simple index and query syntax while supporting Boolean, phrase, span, fuzzy, wildcard, regex, case- and accent-insensitive searches, BM25 ranking, exact counts, transactional visibility, updates, backups, replication, joins, and complex filters. Its developers position it as addressing capabilities and operational requirements not fully covered by PostgreSQL GIN, ParadeDB, or pg_textsearch, with examples spanning ranked product search, unranked legal discovery, and tag-counting applications. Benchmarks on a 150-million-document, 85 GB Stack Exchange corpus found that TIN built its index in about eight minutes using 32 GB RAM and, across tested workloads, delivered substantially higher throughput, lower p99 latency, and less data read per query than competing extensions; some alternatives could not complete certain workloads because of memory limitations or restricted query support. The extension’s design uses PostgreSQL’s native ctid tuple locations as document identifiers rather than maintaining separate sequential IDs, enabling compressed two-level bitmap postings, vectorized CPU operations, direct heap-order row access, and avoidance of identifier-mapping overhead. TIN also integrates MVCC visibility handling, VACUUM-driven liveness bitmaps, and background segment promotion and merging, with its ctid-based structure intended to reduce the rewriting, recompression, and write amplification commonly required when search-index segments are merged.
No tracked trend matches for this post yet.
Use this post, company, and trend context to find content marketing opportunities, perform competitive analysis, or address product feature gaps via the Plushcap MCP server or the Plushcap API.