Android 搜索:使用 FTS 表以及普通 SQLite DB 表

2023-11-23

这更多的是一个设计问题——而不仅仅是一个编码问题。

我已经有一个将数据存储在 SQLite DB 表中的应用程序。现在我想添加搜索功能。

据我了解,为了启用搜索功能,我需要 FTS 表。

我拥有的表格是(不完全相同,但给出了非常相似的示例):

内容表- 具有以下列:ID、标题、内容、创建者、创建时间、更改者、更改时间等...

评论表- 具有以下列:ID、评论、创建者、创建于、回复等...

其他表,如用户数据、元数据、类别、标签等。

在这里我只想要标题、内容和评论的搜索功能。显然,我不需要对其他列(例如由等创建的列)进行搜索功能。

哪个是最好的选择?

  1. 我应该丢弃旧表并仅创建 FTS 表吗?
  2. 我是否应该继续使用旧表并创建仅支持搜索功能的新 FTS 表。

我发现选项 1 存在的问题是:

  • 这是一个颠覆性的改变!
  • 我有一组多个表,其中包含许多非文本列,我不打算对其执行搜索。如何在 FTS 中对它们进行建模?
  • 现在我正在利用 RDBMS 的功能,例如 Join 等,我想如果我完全切换到 FTS 表,我将无法做到这一点!

我发现选项 2 存在的问题是:

  • 它将导致重复的表 - 并且会消耗更多的内存/空间!
  • 每次我在 SQL 表中插入/更新/修改条目时,我都必须在 FTS 表中进行相同的更改。

那么,最好的选择是什么? 有没有机构面临过类似的挑战?


无法有效地查询 FTS 表以进行非 FTS 搜索,因此选项 1 不适用。

整个FTS表本质上是一个索引。这是速度/空间的权衡,并且进行全文搜索的能力通常是值得的。 为了避免存储原始文本两次,请使用外部内容表.

要保持原始表和 FTS 表同步,请使用触发器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 搜索:使用 FTS 表以及普通 SQLite DB 表 的相关文章

随机推荐

  • 不同参数的多态性

    是否有可能使用具有不同参数的相同名称的函数来实现多态性 例如 我希望这三个功能合二为一 virtual bool isValid1 const std string 0 virtual bool isValid2 const uint32
  • 初始化 char 指针 C++ [重复]

    这个问题在这里已经有答案了 这怎么可能 const char cp Hello world 我目前正在阅读 C 入门书 我发现了这个例子 我是一个非常初学者 为什么可以用字符串初始化 char 指针 我真的无法理解这个例子 据我所知 指针只
  • 将窗户控制器插座连接到窗户

    我正在尝试在 XCode 4 中创建一个简单的模式对话框 我已经创建了 xib 创建了 NSWindowController 派生类 并使其成为 xib 的文件所有者中的类 我遇到问题的部分是物理连接窗口插座 如问题答案中所述 如何为从 N
  • 是否有可以将正则表达式存储为值的数据库?

    我正在寻找一个可以将正则表达式存储为值的数据库 例如 像这样的东西 name gt Tim count gt 3 expression gt t name gt Rob count gt 4 expression gt a d name g
  • JS中如何检查多维数组项是否设置?

    JS中如何检查多维数组项是否设置 w 1 2 new Array w 1 2 1 new Array w 1 2 1 1 10 w 1 2 1 2 20 w 1 2 1 4 30 如何检查是否w 1 2 1 3 is set 解决方案与if
  • 读取环境变量运行速度慢?

    如果使用环境变量比使用普通变量 在脚本语言中 慢是正确的 那么它是如何解释的 检索环境变量的值将引发系统调用 普通变量内置于您运行的语言中 位于相同的地址空间中 甚至可能位于 CPU 寄存器中 取决于语言及其执行方式 只是获取数据的路程更长
  • iOS 应用程序验证错误:缺少 plist 密钥 CFBundleShortVersionString

    我用 SpriteBuilder 和 cocos2d 构建了一个 iOS 游戏 当我尝试将其提交到 AppStore 时 出现以下错误 错误 ITMS 9000 缺少 plist 密钥 Info plist 文件缺少所需的密钥 CFBund
  • Python 中返回 NoneType 的函数? [复制]

    这个问题在这里已经有答案了 在从事 CS1 的 Python 项目时 我遇到了一个我和我的室友都无法解决的奇怪问题 代码的一般范围是使用数字填充具有一定大小的形状的 0 网格来填充空间 并且我们必须一路检查以确保我们没有将形状放置在已经有形
  • JQuery JSTree - 添加工具提示

    有没有办法添加一个Tooltip to a JSTree节点 我想当用户将鼠标悬停在元素上时显示额外的信息 我对 JQuery 非常了解 所以对此可能有一个明显的答案 编辑 感谢下面的 zzzz 我能够弹出一个简单的悬停框 尽管将树的div
  • 如何检查div是否有id?

    div div class ui droppable one div div class ui droppable two div div class ui droppable three div div class ui droppabl
  • 创建 javadoc 时发生致命错误(无法找到包 java.lang)

    我尝试在 Linux 下使用 Eclipse Kepler 在我的 java 项目中运行 javadoc 但收到此错误 Constructing Javadoc information com sun tools javac util Fa
  • 我应该尽可能使用并行流吗?

    使用 Java 8 和 lambda 可以轻松地将集合作为流进行迭代 并且使用并行流也同样容易 两个例子来自the docs 第二个使用并行流 myShapesCollection stream filter e gt e getColor
  • 在 Sphinx 文档中保留包装/修饰的 Python 函数的默认参数

    我该如何更换 args and kwargs带有装饰函数文档中的真实签名 假设我有以下装饰器和装饰函数 import functools def mywrapper func functools wraps func def new fun
  • 为什么将条件应用于 IAM 策略中的 ec2:DescribeInstances 会失败?

    当尝试配置可以使用策略列出哪些实例时 我注意到以下问题 当条件未实现时 所有实例都是可见的 当任何条件被实现时 什么都看不到 包含有条件的示例策略 Version 2012 10 17 Statement Sid Stmt146123588
  • 访问 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData

    谁能告诉我为什么我无法访问注册表项 HKEY LOCAL MACHINE SOFTWARE Microsoft Windows CurrentVersion Installer UserData 如果我查询GetSubKeysNames o
  • 优化 Jinja2 环境创建

    我的应用程序在 Google App Engine 上运行 由于 CPU 使用率高 大多数请求不断收到黄色标记 使用探查器 我将问题追溯到创建的例程jinja2 Environment实例 我正在模块级别创建实例 from jinja2 i
  • 为什么在 Intellij 中使用 Android SDK 时缺少 Android AVD Manager?

    I am trying to use the Android SDK in my IntelliJ project that is a larger project containing both web and ios clients a
  • Numpy:作为 Matlab 进行赋值和索引

    有时 分配仅具有一个索引的数组很有用 在 Matlab 中这很简单 M zeros 4 M 1 5 end 1 M 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 Numpy 有没有办法做到这一点 首先 我想展平数组 但该操
  • 最适合拼写检查器、字典和同义词库的算法和数据结构

    实施的最佳方式 字典 有没有比 Trie 更好的 DS 字典 同义词库 不知道 因为匹配的是单词的含义 相似的含义 拼写检查器 比哈希映射更好的东西 如果可能的话 提供正确的拼写建议 当在一小时的面试中被问到 我们是否需要为算法编写 c c
  • Android 搜索:使用 FTS 表以及普通 SQLite DB 表

    这更多的是一个设计问题 而不仅仅是一个编码问题 我已经有一个将数据存储在 SQLite DB 表中的应用程序 现在我想添加搜索功能 据我了解 为了启用搜索功能 我需要 FTS 表 我拥有的表格是 不完全相同 但给出了非常相似的示例 内容表