当前位置:首页 > 数据库 > SQlite

android – 如何在SQLite中使用FTS3

我有几乎200k条目的表.当我尝试用LIKE搜索时,它非常慢.现在我决定使用FTS.所以我创建了两个索引来进行搜索.然后我创建了fts虚拟表.

`CREATE TABLE [search_eng] (
  [id] INTEGER PRIMARY KEY AUTOINCREMENT, 
  [entry_id] INTEGER, 
  [re_value] TEXT, 
  [ke_value] TEXT, 
  [g_value] TEXT);

CREATE INDEX idx_se_re ON search_eng (re_value);

CREATE INDEX idx_se_gv ON search_eng (g_value);


CREATE VIRTUAL TABLE search_eng_fts USING fts3(id, entry_id, re_value, ke_value, g_value);`

我不知道如何使用新创建的FTS表.所以我的问题是如何使用该虚拟表进行搜索?能给我举个例子吗?

解决方法:

这在the documentation中解释.

FTS搜索不需要两个索引.

您应该将id列声明为INTEGER PRIMARY KEY.
您可能不需要FST表中的entry_id列.

将文本复制到FTS表中:

INSERT INTO search_eng_fts(id, re_value, ke_value, g_value)
SELECT id, re_value, ke_value, g_value FROM search_eng;

然后,您可以使用MATCH运算符在该表中进行搜索:

SELECT id FROM search_eng_fts WHERE re_value MATCH 'hello';

【说明】本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:254677821)!