feat: add pg_trgm extension and GIN indexes for fuzzy search

- Enable pg_trgm extension for trigram-based string matching
- Add GIN indexes on media_items text fields (title, author, series, tags, contributors)
- Supports efficient partial matching and fuzzy search fallback
This commit is contained in:
2026-01-29 20:20:20 -05:00
parent 0ef661d158
commit 46fa8f7c55
+10
View File
@@ -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);