使用来自 sqlite3 的 FTS4 的两列

Use two columns for FTS4 from sqlite3

我有一个包含两列(ldap、名称)的 table。我希望能够使用库 FTS4 对这些列中的任何列进行全文搜索。在这里,我有几个用于创建虚拟 table 的语句,但是当我使用 Match 创建语句时,结果为空,尽管它应该 return data.

CREATE VIRTUAL TABLE IF NOT EXISTS sales_rep USING FTS4(ldap,name, content="__sales_rep");
CREATE TRIGGER IF NOT EXISTS __sales_rep___after_insert AFTER INSERT ON __sales_rep BEGIN INSERT INTO sales_rep (ldap, name) VALUES (new.ldap, new.name);END;

我正在插入一行 (ldap, name) VALUES ('test', 'Bryan'); 但是使用

SELECT * FROM sales_rep where name MATCH 'Bry';

结果为空

在外部内容 FTS table 中插入数据需要明确提供 docid 的值,该值应该是内容 table 的 rowid

在您的情况下,您需要更改触发器:

CREATE TRIGGER  __sales_rep___after_insert
AFTER INSERT ON __sales_rep
BEGIN
  INSERT INTO sales_rep (docid, ldap, name)
  VALUES (new.rowid, new.ldap, new.name);
END;