//
Search across all documentation pages
tsvector in a column, not runtime to_tsvector() in WHERE. Generated STORED or trigger-maintained.setweight A for title, B for body, C for tags.english for prose; simple for SKUs and error codes.tsvector. GiST only after write-heavy benchmark proves benefit.CREATE INDEX CONCURRENTLY on large tables. Avoid production write locks.REINDEX INDEX CONCURRENTLY or rebuild during maintenance window.ANALYZE after reindex. Planner needs fresh stats for bitmap scans.tsquery strings. Use plainto_tsquery or websearch_to_tsquery.ts_rank or limit OR terms from user parsers.ts_headline. Improves result UX without app-side parsing.ORDER BY rank DESC, published_at DESC breaks ties sensibly.Stack versions: This page was written for PostgreSQL 18.4 (stable 18, maintenance 17), pgvector 0.8+, PostGIS 3.5+, pgbouncer 1.x, and Patroni 3.x.
Reviewed by Chris St. John·Last updated Jul 19, 2026