Android搜索:使用FTS表和普通的SQLite数据库表

Var*_*rma 7 sqlite android full-text-search

这更像是一个设计问题 - 而不仅仅是编码问题.

我已经有一个应用程序,可以在SQLite数据库表中存储数据.现在我想在此添加搜索功能.

据我所知,为了启用搜索功能,我需要FTS表.

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

内容表 - 包含以下列:Id,标题,内容,创建者,创建者,更改者,更改者等...

评论表 - 包含以下列:Id,评论,创建者,创建者,回复等...

其他表格,如用户数据,元数据,类别,标签等.

在这里,我只想要标题,内容和评论的搜索功能.显然我不需要像其他列那样的搜索功能.

哪个是最好的选择?

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

我在选项1中看到的问题是:

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

我在选项2中看到的问题是:

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

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

CL.*_*CL. 11

对于非FTS搜索,无法有效查询FTS表,因此选项1已用完.

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

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