How to exclude column from FTS3 table search

爷,独闯天下 提交于 2019-12-03 16:11:46

An FTS3 table gets a free 64 bit integer column called docid which is not indexed. Simply put additional data in a separate table where the Primary Key for that table is the same as the docid for the FTS3 table.

CREATE VIRTUAL TABLE t USING FTS3(text1, text2);

CREATE TABLE additional (id INTEGER PRIMARY KEY, hidden VARCHAR);

INSERT INTO t (docid, text1, text2) VALUES (243, 'foo', 'bar');
INSERT INTO additional VALUES (243, 'bas');

SELECT docid, text1, text2, hidden FROM t JOIN additional ON t.docid = additional.id WHERE t MATCH 'foo';

Old thread, but if you're using a newer build of SQLite (> 3.8), you can now use the notindexed option, e.g.:

CREATE VIRTUAL TABLE t USING FTS4(uuid, document, notindexed=uuid);

This will exclude the column from match queries.

I've also got this working on iOS by embedding my own build of SQLite 3.8.

Documentation for notindexed option

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!