warmFts5 method
V44: build (or rebuild) the FTS5 corpus for a paged table so
hybrid search TVFs can use it. In-memory tables don't need this
— fts5IndexFor lazily builds their corpus on demand. Paged
corpuses persist in the _fts5IndexCache until the next
mutation of tableName invalidates them.
Implementation
Future<void> warmFts5(String tableName, String columnName) async {
final pt = _pagedTable(tableName);
if (pt == null) {
// In-memory: just prime the lazy cache.
fts5IndexFor(tableName, columnName);
return;
}
final key = '${tableName.toLowerCase()}:${columnName.toLowerCase()}';
final pkName = pt.primaryKey.name;
final docs = <String>[];
final pks = <Object>[];
await for (final row in pt.scan()) {
final pk = row[pkName];
if (pk == null) continue;
final txt = row[columnName] ?? row[columnName.toLowerCase()];
docs.add(txt?.toString() ?? '');
pks.add(pk);
}
_fts5IndexCache[key] = Fts5Index.build(docs);
_pagedFts5Pks[key] = pks;
}