Iniciante na pesquisa de texto completo, tenho uma tabela feed_items da seguinte forma
feed_items (...title varchar, summary varchar, fullarticle varchar,...)
Eu quero criar uma coluna ts_vector para pesquisar a consulta do título ou do resumo com maior prioridade dada se a consulta for encontrada no título.
Opção 1 eu posso criar uma coluna gerada que fica assim
ALTER TABLE feed_items
ADD COLUMN textsearchable_index_col tsvector
GENERATED ALWAYS AS (to_tsvector('english', coalesce(title, '') || ' ' || coalesce(summary, ''))) STORED;
Opção 2 posso criar uma trigger após inserir ou atualizar assim, o exemplo abaixo não é perfeito, criei uma coluna separada para title_vector e summary_vector mas acho que preciso mesclá-los em uma coluna e ainda decidir como dar mais importância a consulta encontrada no título
ALTER TABLE "feed_items"
ADD IF NOT EXISTS "title_vector" tsvector;
COMMENT ON COLUMN "feed_items"."title_vector" IS $pga$vector representation of title$pga$;
UPDATE feed_items SET title_vector = to_tsvector('english', title);
CREATE INDEX "idx_title_vector" ON "feed_items" USING gin ("title_vector");
CREATE TRIGGER "trigger_update_title_vector"
BEFORE INSERT OR UPDATE ON "feed_items"
FOR EACH ROW
EXECUTE PROCEDURE "tsvector_update_trigger"($pga$title_vector$pga$, $pga$pg_catalog.english$pga$, $pga$title$pga$);
Minha principal dúvida é qual a diferença entre os dois? e qual devo usar?