跳到主要内容

buildFtsTriggersSql()

function buildFtsTriggersSql(
table,
fields,
options?): string;

Defined in: packages/rxdb-adapter-pglite/src/fts/build-fts-triggers.ts:43

生成 PostgreSQL FTS 同步 trigger(函数 + trigger)。

与 SQLite FTS5 _ai/_ad/_au 三 trigger 写虚拟表的方案不同,PG 用一个 BEFORE INSERT OR UPDATE trigger 直接在行写入前计算 tsvector 写到 _fts 列: 这样既省去 AFTER trigger 的额外写入,也避免了删除/虚拟表同步的开销。

返回 SQL 包含 3 条语句(以 ; 分隔):

  1. CREATE OR REPLACE FUNCTION "<table>__fts_update"() —— 计算并写入 NEW."_fts"
  2. DROP TRIGGER IF EXISTS "<table>__fts_trg" ON "<table>" —— 幂等清理
  3. CREATE TRIGGER "<table>__fts_trg" BEFORE INSERT OR UPDATE ON "<table>" FOR EACH ROW EXECUTE FUNCTION "<table>__fts_update"()

字段集合必须与 buildCreateFtsTableSqlfields 一致,否则查询时 漏字段或多字段都会让 ranking 失真。

Parameters

ParameterTypeDescription
tablestring业务表名
fieldsreadonly FtsField[]参与 FTS 的字段(顺序影响 concat_ws 中字段拼接顺序,对 ranking 有轻微影响)
options?FtsOptions可选 regconfig,默认 DEFAULT_FTS_REGCONFIG

Returns

string

多条 SQL 拼接(以 ; 分隔)

Throws

fields 为空时抛出