gpt4 book ai didi

sql - FTS(全文搜索)sqlite如何实现FTS表?

转载 作者:行者123 更新时间:2023-12-02 14:52:08 25 4
gpt4 key购买 nike

我正在尝试创建一个类似 Android 的应用程序,并希望允许快速搜索,因此正在研究适用于 Android 的 sqlite 的 FTS。我知道如何创建它,但想知道一些事情:

Table_words - 我的单词表

  1. 如果我创建一个新的 FTS 表,即 Table_words_fts - 它是否会替换 table_words,是否会作为另一个表添加?

  2. 如果作为另一个表添加,我是否可以像通过代码添加数据到 table_words 一样,同时将数据添加到 FTS 表中?

  3. 如果可以,我可以省略一些不必要的列并包含 table_words 表中没有的其他列吗?

  4. 如果我只是替换 1 中的表,那么它会影响常规查询吗?

  5. 如果我不替换它,但不需要在新的 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);

其余的我将按照常规方式进行...但回顾一下:试图弄清楚表是否是在表之外另外创建的?数据是否也定期存储在其中?

最佳答案

  1. 是的,它的作用就像一个常规表格,它不会取代现有的表格。

  2. 是的,您需要将数据单独添加到 FTS 表中,但如果您愿意,可以通过触发器来完成。

  3. 是的,您可以有不同的列。

  4. 您不会替换原始表,因此不会影响这些查询。当然,您可以对 FTS 表运行常规查询。

  5. 是的,您可以使用其他地方的内容创建 FTS 表;请参阅Contentless FTS Tables了解详情。

关于sql - FTS(全文搜索)sqlite如何实现FTS表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21640064/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com