7

我有近 20 万个条目的表。当我尝试使用 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 表。所以我的问题是如何使用该虚拟表进行搜索?能给我举个例子吗?

4

1 回答 1

7

这在文档中进行了解释。

FTS 搜索不需要这两个索引。

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

将文本复制到 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';
于 2013-08-27T15:11:16.333 回答