tripoli.cloud/tripoli-api/migrations/0003_search.sql

14 lines
657 B
MySQL
Raw Normal View History

-- Recherche plein texte façon Spotlight : sur le nom du fichier *et* sur
-- son contenu extrait à l'upload (voir files::upload). Colonne générée
-- STORED plutôt que calculée à la volée dans chaque requête : l'index
-- GIN a besoin d'une colonne matérialisée pour être utilisable.
ALTER TABLE files ADD COLUMN content_text TEXT;
ALTER TABLE files ADD COLUMN search_vector tsvector
GENERATED ALWAYS AS (
setweight(to_tsvector('french', coalesce(filename, '')), 'A') ||
setweight(to_tsvector('french', coalesce(content_text, '')), 'B')
) STORED;
CREATE INDEX files_search_vector_idx ON files USING GIN (search_vector);