这更像是一个设计问题 – 而不仅仅是编码问题.
我已经有一个应用程序,可以在sqlite数据库表中存储数据.现在我想在此添加搜索功能.
我拥有的表格(不完全相同,但给出了非常相似的例子):
内容表 – 包含以下列:Id,标题,内容,创建者,更改者,更改者等…
在这里,我只想要标题,内容和评论的搜索功能.显然我不需要像其他列那样的搜索功能.
哪个是最好的选择?
>我应该丢弃旧表并仅创建FTS表吗?
>我应该继续使用旧表并创建仅支持搜索功能的新FTS表.
我在选项1中看到的问题是:
>这是一次颠覆性的变革!
>我有一组包含许多非文本列的多个表,我不打算在其中执行搜索.如何在FTS中对它们进行建模?
>现在我正在使用像Join等RDBMS的功能,如果我完全切换到FTS表,我认为我无法做到这一点!
我在选项2中看到的问题是:
>它将导致重复的表 – 并将消耗更多的内存/空间!
>每次在sql表中插入/更新/修改条目时,我都必须在FTS表中进行相同的更改.
那么,最好的选择是什么?
有任何机构面临类似的挑战吗?
解决方法
对于非FTS搜索,无法有效查询FTS表,因此选项1已用完.
整个FTS表基本上是一个索引.这是一个速度/空间权衡,并且进行全文搜索的能力通常是值得的.
要避免两次存储原始文本,请使用external content tables.
要使原始表和FTS表保持同步,请使用触发器.