buildFieldContainsSql()
function buildFieldContainsSql(opts): string;
Defined in: packages/rxdb-plugin-search/src/core/search-engine.ts:148
单字段 contains fallback SQL。
当该 collection 的 FTS5 完整词 / 前缀词全部零命中时,退化到源表上的
instr(lower(...), lower(?)) 中缀匹配,覆盖 including 被 ncluding 查询命中的场景。
语义边界(刻意如此,非缺陷):这是"全局 miss 时的宽松兜底",不承诺中缀召回完整性——
只要同 collection 任一字段有 FTS 命中,contains 就不执行(仅可中缀命中的记录不会出现)。
若始终执行,则每次查询每个字段都要做一次无索引的 instr 全表扫描,大表上不可接受。
fallback 排序权重整体劣后于 FTS 结果(rank 基数 1000000 + prefix_penalty 2)。
参数顺序(named-positional ?N):
?1=field(命中列名字面量)?2 .. ?(tokenCount + 1)= tokens(每个被 rank/where 共享引用)?(tokenCount + 2)= snippetLength?(tokenCount + 3)= limit?(tokenCount + 4)= offset
Parameters
| Parameter | Type |
|---|---|
opts | { field: string; fieldIsArray?: boolean; primaryKey: string; sqlTable?: string; table: string; tokenCount: number; } |
opts.field | string |
opts.fieldIsArray? | boolean |
opts.primaryKey | string |
opts.sqlTable? | string |
opts.table | string |
opts.tokenCount | number |
Returns
string