我正在尝试创建一个类似 android 的应用程序并希望允许快速搜索,因此正在研究 FTS for sqlite for Android。我知道如何创建它,但想知道一些事情:
Table_words - 我的单词表
如果我创建一个新的 FTS 表,即 Table_words_fts - 它是否替换了 table_words,它是作为另一个表添加的吗?
如果添加为另一个表,我是否会像通过代码将数据添加到 table_words 一样同时将数据添加到 FTS 表?
如果是这样,我可以省略一些不必要的列并包括不在 table_words 表中的其他列吗?
如果我只是替换数字 1 中的表,那么它会影响常规查询吗?
如果我不替换它,但不需要将数据存储在新的 FTS 表中,那么它是否只是为了能够更快地读取表而添加?
到目前为止我的理解如下,它是一个单独的表,添加我在整个代码中添加数据,我可以省略一些列但不能添加新列。此外,我存储数据的方式与将其添加到其他表的方式完全相同......
这是我使用它的想法......创建表格:
// create FTS tables for quicker matches for search
db.execSQL("CREATE VIRTUAL TABLE " + TABLE_WORDS_FTS + " USING fts3("
+ KEY_ID + ", " + KEY_DICTIONARYID + ", " + KEY_WORD1 + " , "
+ KEY_WORD2 + " , " + KEY_WORD3 + ", " + KEY_WORD4 + " " + ");");
同时创建常规表:
// Words table create statement
private static final String CREATE_TABLE_WORDS = "CREATE TABLE "
+ TABLE_WORDS + "(" + KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_DICTIONARYID + " INTEGER," + KEY_WORD1 + " TEXT," + KEY_WORD2
+ " TEXT," + KEY_WORD3 + " TEXT," + KEY_WORD4 + " TEXT" + ")";
db.execSQL(CREATE_TABLE_WORDS);
其余的我将按照常规方式进行......但回顾一下:试图弄清楚表是否是在表之外创建的?如果数据也定期存储在其中?