【发布时间】:2026-02-03 11:40:01
【问题描述】:
SQLite FTS implies 的文档表明应该使用 INSERT、UPDATE、DELETE 等填充和更新 FTS 表。
这就是我所做的 - 添加行、删除行等,但最近我注意到,一旦我创建 FTS 表,它就会使用源中的数据自动填充。我是这样创建的:
CREATE VIRTUAL TABLE notes_fts USING fts4(content="notes", notindexed="id", id, title, body)
如果我在“notes”表中添加一行,它也会自动添加到 notes_fts。我想这就是虚拟表。
但是,为什么会有关于填充 FTS 表的章节呢?甚至有什么意义,例如,如果我删除一行,如果它仍在源表中,它将回来。
对此有任何想法吗? FTS 真的需要填充吗?
【问题讨论】:
-
我不知道旧版本,但是具有外部内容表的 FTS5 需要在内容表中添加、删除或更改行时更新 fts 表,以便索引更新。也许您忽略了一些触发器设置来做到这一点?
-
最好对问题所在发表评论。我无法重现它demo
-
@LukaszSzozda,该消息实际上是相关触发器中的错误。不知何故,Sqlite 不显示触发器的名称,这让人感到困惑。
标签: sqlite full-text-search fts4