Skip to main content
Bunny Database includes SQLite’s full-text search modules. See the SQLite documentation for FTS5 and FTS3 and FTS4.

Modules

Tokenizers and table options

The unicode61 (default), ascii, porter, and trigram tokenizers are available. The icu tokenizer is not. Contentless and external-content tables, detail=, columnsize=, prefix=, and UNINDEXED columns all work as documented upstream.

Match expressions

MATCH expressions support terms, "phrases", prefix*, column:term, NEAR, AND, OR, and NOT. NOT is a binary operator in both FTS5 and FTS3/4, so write a NOT b rather than a AND NOT b. The AND NOT form is a syntax error. The fts4aux table accepts only the one-argument form fts4aux(table).

Auxiliary functions

See the SQLite documentation for the FTS5 auxiliary functions and the FTS3/4 snippet, offsets, and matchinfo functions. The bm25() score is also exposed as the hidden rank column, and its weights can be configured with INSERT INTO t(t, rank) VALUES ('rank', 'bm25(10.0, 1.0)'). When a term appears in half or more of the rows, its score is -0.0. That is correct BM25 behavior, not a fault.

Special commands

FTS5 special commands are written as INSERT INTO t(t) VALUES ('command'). The optimize, rebuild, integrity-check, merge, automerge, usermerge, crisismerge, pgsz, secure-delete, and flush commands are accepted on every FTS5 table. The delete and delete-all commands work only on contentless and external-content tables. FTS3/4 tables accept optimize, rebuild, integrity-check, merge=n,m, and automerge=n.
Last modified on November 2, 2026