我已经按照https://kimsereylam.com/sqlite/2020/03/06/full-text-search-with-sqlite.html设置SQLite 的虚拟表扩展 FTS5以在外部内容表上进行全文搜索。虽然博客展示了如何设置触发器以保持虚拟 FTS 表随数据更新:
CREATE TABLE user (
id INTEGER PRIMARY KEY,
username TEXT NOT NULL UNIQUE,
email TEXT NOT NULL UNIQUE,
short_description TEXT
)
CREATE VIRTUAL TABLE user_fts USING fts5(
username,
short_description,
email UNINDEXED,
content='user',
content_rowid='id'
)
CREATE TRIGGER user_ai AFTER INSERT ON user
BEGIN
INSERT INTO user_fts (rowid, username, short_description)
VALUES (new.id, new.username, new.short_description);
END;
...
我无法以类似的方式从所有以前的数据中填充 FTS 表。我将继续使用博客中的示例:
INSERT INTO user_fts (rowid, username, short_description) SELECT (id, username, short_description) FROM user;
但是,sqlite (3.37.2) 失败并显示row value misused
.
请说明id
、和是如何相关的content_rowid
,以及如何修改查询以正确更新 FTS 表。rowid
new.id