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:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user