在Android的官方开发文档上,有建议在使用文本类的数据库全文搜索(full-text search)时,使用FTS优化查询速度。有关FTS的介绍文章不多,本文调研整理一下有关知识,供在Android上使用FTS之前参考。
1.什么是FTS?
FTS,即full text searches的缩写。是SQLite提供的一个针对文本类模糊查询的优化工具。不出所料,其优化方式也是在索引上做文章,这部分在4中介绍,暂时不展开。FTS并非标准SQL语言支持的功能。Android的数据库底层基于SQLite,所以也支持FTS。
2.如何在Android上使用FTS?——Android官方demo解析
SQLite提供了一种内嵌于SQL语句中的使用FTS的方法,简单地说,需要做两件事:创建FTS的virtual table、在原始数据库发生增删改的时候trigger FTS virtual table同步。这样,对应的查询就可以在FTS virtual table上进行了。至于创建以及使用索引的事情,是SQLite在背后偷偷做的,使用者无需关心。Android官方给出了一个doc和一个project来演示如何使用FTS,本文先从这里入手,分析一下,然后再做补充。
demo project:
https://github.com/android/platform_development/tree/master/samples/SearchableDictionary/
Android源代码中也提供了这个demo:development/samples/SearchableDictionary
doc内容有限,仅仅是demo project的讲解。
doc内容有限,仅仅是demo project的讲解。
这个demo同时也是Android搜索框架的demo,搜索框架相关内容可以参考另外两篇文章:
如何将自己的App作为外部数据源提供给Android系统搜索?
Android框架/系统服务是怎样管理第三方Search数据源的?
如何将自己的App作为外部数据源提供给Android系统搜索?
Android框架/系统服务是怎样管理第三方Search数据源的?