D. Richard Hipp, author of SQLite presented this years keynote. A fascinating jaunt from the civilized realms into barbarian territory and back. Here are some of the notes I took—
(Incidentally I noted that Richard pronounces SQLite S-Q-L-ite, not Sequel-Lite.)
Possibly the most widely distributed Tcl extension in the world.
Automated undo/redo using triggers.
What if ...
Key concept: SQLite wants to replace fopen()/[open] not Oracle/Oratcl.
Crossing into barbarian lands now...
OR queries do an intersection. AND queries do a union.
Phrase Queries: naive method: do an AND query, then examine every document in the result set in a second pass and eliminate those that lack the phrase. Very bad performance in pathalogical cases. Instead update posting list to store document:position (multiple occurances included multiple times).
As of SQLite 3.3.8 (released Monday!) full text search support in SQLite. Ricahrd's authorized to announce help from engineers at Google. Later question elicited that roughly half of the FTS code was written by him & Dan, the other half by four engineers [didn't have time to write down their names] from Google. He isn't able/can't comment on their motivations/plans/internal usage. (Obviouslyy won't be replacing their search engine with SQLite.)
CREATE VIRTUAL TABLE email USING fts1(content);
CREATE VIRTUAL TABLE email USING fts1("from" TEXT, "to" TEXT, subject TEXT, body TEXT, tokenize porter);
SELECT rowid, subject FROM email WHERE email MATCH 'wyrick sqlite';
SELECT rowid, subject FROM email WHERE email MATCH $::querytext;
MATCH: when left operand is the name of the table match against any column can specify a particular column $::querytext can specify columns i.e., "from:wyrick"
Built in snippet generator: SELECR rowid, snippet(email) FROM email WHERE email MATCH ...
FTS1 comes standard with Tcl bindings for SQLite (>= 3.3.8).
Pervasive Full-Text Search (users want it; made easy using Tcl and SQLite).
—Michael A. Cleverly
Wednesday, October 11, 2006 at 09:38
Many thanks, Michael. It's great that you wrote this up, and so promptly.
How does Subversion use SQLite? The Subversion backends are Berkely DB, or their own FSFS format. Trac uses both Subversion and SQLite, but I don't think Subversion has any SQLite support.
I think the Subversion work is on the merge-tracking branch, where (I think!) an SQLite database is used to keep track of what revisions where merged from what branch to where.
Also, it says in this article that OR does intersection, AND does union. Isn't that the other way around?