-- Fuzzy search
-- https://hevodata.com/blog/postgresql-full-text-search-setup/#Fuzzy_Search_vs_Full_Text_Search
CREATE EXTENSION pg_trgm;

-- Create column for seearch tokens
    ALTER TABLE threads
      ADD COLUMN search_tokens TSVECTOR
GENERATED ALWAYS AS
          (TO_TSVECTOR('english', thread_author) ||
           TO_TSVECTOR('english', thread_title ) ||
           TO_TSVECTOR('english', thread_body  )) STORED;

-- Create GIN index for search tokens
CREATE INDEX threads_search_idx
    ON threads
 USING GIN(search_tokens);

-- Same for remarks
    ALTER TABLE remarks
      ADD COLUMN search_tokens TSVECTOR
GENERATED ALWAYS AS
          (TO_TSVECTOR('english', remark_author) ||
           TO_TSVECTOR('english', remark_body  )) STORED;

CREATE INDEX remarks_search_idx
    ON remarks
 USING GIN(search_tokens);