/// Turn arbitrary user text into a safe FTS5 query: split on whitespace AND
/// control characters (incl. NUL, which would otherwise truncate the bound C
/// string and produce an unterminated FTS5 literal), then wrap each token as an
/// FTS5 string literal (double-quoted, embedded `"` doubled). This neutralizes
/// FTS5 operators/columns/hyphens so plain text never errors.
///
/// `match_any=false` joins tokens with a space (FTS5 implicit AND, the default).
/// `match_any=true` joins them with ` OR ` to broaden recall. Blank input => "".