You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

27 lines
864 B

-- 为 memory_atoms 表添加全文搜索索引,支持混合检索
CREATE EXTENSION IF NOT EXISTS vector;
ALTER TABLE memory_atoms ADD COLUMN IF NOT EXISTS content_tsv tsvector;
CREATE INDEX IF NOT EXISTS idx_memory_atoms_content_tsv
ON memory_atoms USING GIN (content_tsv);
CREATE OR REPLACE FUNCTION update_memory_atoms_tsv() RETURNS trigger AS $$
BEGIN
NEW.content_tsv := to_tsvector('simple', COALESCE(NEW.content, ''));
RETURN NEW;
END;
$$ LANGUAGE plpgsql;
DO $$
BEGIN
IF NOT EXISTS (
SELECT 1 FROM pg_trigger WHERE tgname = 'trg_memory_atoms_tsv'
) THEN
CREATE TRIGGER trg_memory_atoms_tsv
BEFORE INSERT OR UPDATE ON memory_atoms
FOR EACH ROW EXECUTE FUNCTION update_memory_atoms_tsv();
END IF;
END $$;
UPDATE memory_atoms SET content_tsv = to_tsvector('simple', COALESCE(content, ''));