跳到主要内容

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​

ParameterType
opts{ field: string; fieldIsArray?: boolean; primaryKey: string; sqlTable?: string; table: string; tokenCount: number; }
opts.fieldstring
opts.fieldIsArray?boolean
opts.primaryKeystring
opts.sqlTable?string
opts.tablestring
opts.tokenCountnumber

Returns​

string