Skip to content

Instantly share code, notes, and snippets.

@coolaj86
Created July 21, 2012 06:43
Show Gist options
  • Save coolaj86/3154874 to your computer and use it in GitHub Desktop.
Save coolaj86/3154874 to your computer and use it in GitHub Desktop.
Create a virtual full-text search table in sqlite
CREATE TABLE data(
id VARCHAR PRIMARY KEY ,
uuid CHAR NOT NULL ,
created_at INTEGER NOT NULL ,
updated_at INTEGER NOT NULL ,
md5 CHAR NOT NULL ,
sha1 CHAR ,
imported_at INTEGER NOT NULL ,
path TEXT ,
name VARCHAR NOT NULL ,
mtime INTEGER NOT NULL ,
ctime INTEGER ,
atime INTEGER ,
size INTEGER NOT NULL ,
uid INTEGER ,
gid INTEGER ,
mode INTEGER ,
type TEXT
);
CREATE INDEX md5_index ON data ( 'md5' );
CREATE INDEX sha1_index ON data ( 'sha1' );
CREATE INDEX uuid_index ON data ( 'uuid' );
CREATE VIRTUAL TABLE fts USING fts4 (
content="data" ,
path TEXT ,
name VARCHAR NOT NULL
);
/*
-- Used when `content="data"` is omitted
CREATE TRIGGER data_bu BEFORE UPDATE ON data BEGIN
DELETE FROM fts WHERE docid=old.rowid;
END;
CREATE TRIGGER data_bd BEFORE DELETE ON data BEGIN
DELETE FROM fts WHERE docid=old.rowid;
END;
CREATE TRIGGER data_au AFTER UPDATE ON data BEGIN
INSERT INTO fts(docid, name, path) VALUES(new.rowid, new.name, new.path);
END;
CREATE TRIGGER data_ad AFTER INSERT ON data BEGIN
INSERT INTO fts(docid, name, path) VALUES(new.rowid, new.name, new.path);
END;
*/
/*
ATTACH 'meta.sqlite3' AS meta;
ATTACH 'meta-fts.sqlite3' AS fts;
INSERT INTO fts.data(
id,
uuid,
created_at,
updated_at,
md5,
sha1,
imported_at,
path,
name,
mtime,
ctime,
atime,
size,
uid,
gid,
mode,
type
) SELECT * FROM meta.data;
*/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment