这更多的是一个设计问题——而不仅仅是一个编码问题。
我已经有一个将数据存储在 SQLite DB 表中的应用程序。现在我想添加搜索功能。
据我了解,为了启用搜索功能,我需要 FTS 表。
我拥有的表格是(不完全相同,但给出了非常相似的示例):
内容表- 具有以下列:ID、标题、内容、创建者、创建时间、更改者、更改时间等...
评论表- 具有以下列:ID、评论、创建者、创建于、回复等...
其他表,如用户数据、元数据、类别、标签等。
在这里我只想要标题、内容和评论的搜索功能。显然,我不需要对其他列(例如由等创建的列)进行搜索功能。
哪个是最好的选择?
- 我应该丢弃旧表并仅创建 FTS 表吗?
- 我是否应该继续使用旧表并创建仅支持搜索功能的新 FTS 表。
我发现选项 1 存在的问题是:
- 这是一个颠覆性的改变!
- 我有一组多个表,其中包含许多非文本列,我不打算对其执行搜索。如何在 FTS 中对它们进行建模?
- 现在我正在利用 RDBMS 的功能,例如 Join 等,我想如果我完全切换到 FTS 表,我将无法做到这一点!
我发现选项 2 存在的问题是:
- 它将导致重复的表 - 并且会消耗更多的内存/空间!
- 每次我在 SQL 表中插入/更新/修改条目时,我都必须在 FTS 表中进行相同的更改。
那么,最好的选择是什么?
有没有机构面临过类似的挑战?
无法有效地查询 FTS 表以进行非 FTS 搜索,因此选项 1 不适用。
整个FTS表本质上是一个索引。这是速度/空间的权衡,并且进行全文搜索的能力通常是值得的。
为了避免存储原始文本两次,请使用外部内容表.
要保持原始表和 FTS 表同步,请使用触发器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)