Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
-- Add a generated tsvector column for fast FTS ALTER TABLE articles ADD COLUMN search_vector TSVECTOR GENERATED ALWAYS AS ( setweight(to_tsvector('english', coalesce(title, '')), 'A') || setweight(to_tsvector('english', coalesce(body, '')), 'B') ) STORED; -- GIN index on the generated column CREATE INDEX idx_articles_fts ON articles USING GIN (search_vector); -- Full-text search with ranking SELECT id, title, ts_rank(search_vector, query) AS rank FROM articles, to_tsquery('english', 'postgresql & performance') AS query WHERE search_vector @@ query ORDER BY rank DESC LIMIT 10; -- plainto_tsquery — no special operator syntax needed SELECT title FROM articles WHERE search_vector @@ plainto_tsquery('english', 'index performance'); -- websearch_to_tsquery — Google-style search syntax SELECT title FROM articles WHERE search_vector @@ websearch_to_tsquery('english', 'postgresql -mysql'); -- Highlight matching terms SELECT title, ts_headline('english', body, to_tsquery('postgresql'), 'MaxFragments=2') AS excerpt FROM articles WHERE search_vector @@ to_tsquery('postgresql');
Result
Open