TIN is a native Postgres extension that provides fast, full-featured full-text search with Boolean, phrase and span queries, fuzzy/wildcard/regex term matching, case and accent folding, COUNT() and BM25 top-k scoring, and correct transactional visibility for continuous updates, joins, replication and backups. It installs as a Postgres index type (USING tin) and is GA for Postgres and sharded Neki. The design emphasizes low I/O per query and MVCC-friendly updates so search results immediately reflect committed changes while preserving standard SQL capabilities and complex WHERE clauses.
Benchmarks on an 85 GB, 150M-document Stack Exchange export (and larger corpora) show dramatic gains: index build for TIN took 8m10s and produced a 50.7 GB index using 32 GB RAM, versus ParadeDB 19m20s/52.1 GB/64 GB, pg_textsearch 26m49s/41.5 GB/128 GB, and Postgres GIN 2h9m/28.0 GB/64 GB. For mixed top-10 BM25 queries TIN ran ~25× the QPS of ParadeDB with ~26× lower p99 latency; for conjunction+phrase queries TIN delivered 10× ParadeDB and 541× GIN throughput with p99 latencies 6× and 1,356× lower. Under disjunction workloads with 1,000 updates/sec, TIN sustained far more reads and completed ~270k updates (vs ParadeDB ~185k, pg_textsearch 735), while reading far fewer MB/query. GIN and pg_textsearch failed or were limited on many workloads; TIN consistently shows lower I/O, lower latencies, and much higher concurrency.
Summary generated by AI from the linked article. hn.today is not affiliated with Hacker News or Y Combinator.