CREATE TABLE sometable ( ... keyword_search text not null ); CREATE INDEX sometable_fulltext ON sometable USING GIN (to_tsvector('english', keyword_search)); #### keyword_search text not null GENERATED ALWAYS AS ( name || ' ' || COALESCE(description, '') || ' ' || COALESCE(tags, '')) STORED, #### SELECT * FROM sometable WHERE to_tsvecor('english',keyword_search) @@ plainto_tsquery('english', ?) ORSER BY ts_rank(to_tsvecor('english',keyword_search), plainto_tsquery('english', ?))