fts_sqlite.sql 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. CREATE TABLE fts_db.dirtied_formats ( id INTEGER PRIMARY KEY,
  2. book INTEGER NOT NULL,
  3. format TEXT NOT NULL COLLATE NOCASE,
  4. in_progress INTEGER NOT NULL DEFAULT FALSE,
  5. UNIQUE(book, format)
  6. );
  7. CREATE TABLE fts_db.books_text ( id INTEGER PRIMARY KEY,
  8. book INTEGER NOT NULL,
  9. timestamp REAL NOT NULL,
  10. format TEXT NOT NULL COLLATE NOCASE,
  11. format_hash TEXT NOT NULL COLLATE NOCASE,
  12. format_size INTEGER NOT NULL DEFAULT 0,
  13. searchable_text TEXT NOT NULL DEFAULT '',
  14. text_size INTEGER NOT NULL DEFAULT 0,
  15. text_hash TEXT NOT NULL COLLATE NOCASE DEFAULT '',
  16. err_msg TEXT DEFAULT '',
  17. UNIQUE(book, format)
  18. );
  19. CREATE VIRTUAL TABLE fts_db.books_fts USING fts5(searchable_text, content = 'books_text', content_rowid = 'id', tokenize = 'calibre remove_diacritics 2');
  20. CREATE VIRTUAL TABLE fts_db.books_fts_stemmed USING fts5(searchable_text, content = 'books_text', content_rowid = 'id', tokenize = 'porter calibre remove_diacritics 2');
  21. CREATE TRIGGER fts_db.books_fts_insert_trg AFTER INSERT ON fts_db.books_text
  22. BEGIN
  23. INSERT INTO books_fts(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
  24. INSERT INTO books_fts_stemmed(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
  25. DELETE FROM dirtied_formats WHERE book=NEW.book AND format=NEW.format;
  26. END;
  27. CREATE TRIGGER fts_db.books_fts_delete_trg AFTER DELETE ON fts_db.books_text
  28. BEGIN
  29. INSERT INTO books_fts(books_fts, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
  30. INSERT INTO books_fts_stemmed(books_fts_stemmed, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
  31. END;
  32. CREATE TRIGGER fts_db.books_fts_update_trg AFTER UPDATE ON fts_db.books_text
  33. BEGIN
  34. INSERT INTO books_fts(books_fts, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
  35. INSERT INTO books_fts(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
  36. INSERT INTO books_fts_stemmed(books_fts_stemmed, rowid, searchable_text) VALUES('delete', OLD.id, OLD.searchable_text);
  37. INSERT INTO books_fts_stemmed(rowid, searchable_text) VALUES (NEW.id, NEW.searchable_text);
  38. DELETE FROM dirtied_formats WHERE book=NEW.book AND format=NEW.format;
  39. END;
  40. PRAGMA fts_db.user_version=1;