首页 > 解决方案 > Sqlite FTS5 与 Electron 应用程序中的任何内容都不匹配

问题描述

我正在制作一个 Electron 的笔记应用程序,使用 sqlite3(v3.31.0) 作为后端。这是我对普通表的创建语句Note

create table `Note` (
  `id` char(36),
  `icon` text not null,
  `title` text not null,
  `body` text not null,
  `parentId` char(36) not null,
  `sortOrder` integer not null,
  `userCreatedAt` datetime not null,
  `userModifiedAt` datetime not null,
  `childrenSortBy` text check (`childrenSortBy` in ('DEFAULT', 'TITLE', 'CREATED_AT', 'UPDATED_AT', 'CUSTOM')) not null,
  `childrenSortDirect` text check (`childrenSortDirect` in ('ASC', 'DESC', 'DEFAULT')) not null,
  foreign key(`parentId`) references `Note`(`id`),
  primary key (`id`)
)

这是我对虚拟表的创建语句:

CREATE VIRTUAL TABLE Note_FTS USING fts5(
    title,
    body,
    content='Note'
);
CREATE TRIGGER Note_FTS_ai AFTER INSERT ON Note BEGIN
    INSERT INTO Note_FTS(
        rowid,
        title,
        body
    ) VALUES (
        new.rowid,
        new.title, 
        new.body
    );
END;
CREATE TRIGGER Note_FTS_ad AFTER DELETE ON Note BEGIN
    INSERT INTO Note_FTS(
        Note_FTS,
        rowid,
        title,
        body
    ) VALUES(
        'delete',
        old.rowid,
        old.title,
        old.body
    );
END;
CREATE TRIGGER Note_FTS_au AFTER UPDATE ON Note BEGIN
    INSERT INTO Note_FTS(
        Note_FTS,
        rowid,
        title,
        body
    ) VALUES(
        'delete',
        old.rowid,
        old.title,
        old.body
    );
    INSERT INTO Note_FTS(
        rowid, 
        title,
        body
    ) VALUES (
        new.rowid,
        new.title, 
        new.body
    );
END;

Note创建后,我在表中插入了一行,Note_FTS并由触发器填充: 在此处输入图像描述 在此处输入图像描述

到目前为止,一切都很好。但是当我使用查询时:

SELECT * 
FROM Note_FTS
WHERE Note_FTS MATCH 'aaa';

Sqlite 返回 0 行作为结果。我错过了什么或做错了什么吗?

标签: sqliteelectron

解决方案


推荐阅读