diff --git a/database/schema/schema.sql b/database/schema/schema.sql index 7439afd..5649238 100644 --- a/database/schema/schema.sql +++ b/database/schema/schema.sql @@ -1,6 +1,9 @@ -- Consolidated Bookmann Database Schema -- This file contains the complete current schema for the Bookmann media library management system +-- Enable pg_trgm extension for fuzzy string matching and partial search +CREATE EXTENSION IF NOT EXISTS pg_trgm; + -- Create library types table CREATE TABLE library_types ( id UUID PRIMARY KEY DEFAULT gen_random_uuid(), @@ -244,6 +247,13 @@ CREATE INDEX idx_media_items_author ON media_items(author); CREATE INDEX idx_media_items_library_id ON media_items(library_id); CREATE INDEX idx_media_items_added_by_admin_id ON media_items(added_by_admin_id); +-- GIN indexes for fast fuzzy search using pg_trgm +CREATE INDEX idx_media_items_title_gin ON media_items USING gin (title gin_trgm_ops); +CREATE INDEX idx_media_items_author_gin ON media_items USING gin (author gin_trgm_ops); +CREATE INDEX idx_media_items_series_gin ON media_items USING gin (series gin_trgm_ops); +CREATE INDEX idx_media_items_tags_gin ON media_items USING gin (tags gin_trgm_ops); +CREATE INDEX idx_media_items_contributors_gin ON media_items USING gin (contributors gin_trgm_ops); + -- Progress and ratings indexes CREATE INDEX idx_reading_progress_media_item_id ON reading_progress(media_item_id); CREATE INDEX idx_reading_progress_user_id ON reading_progress(user_id);