SQLite中使用全文搜索FTS
SQLite支持全文搜索。通过全文搜索功能,可以方便用户快速进行查找。在iOS中,GRDB、FMDB等SQLite框架均支持FTS技术,如FTS3、FTS4等。各个框架语法不同,但是操作方式相同。在使用的时候,都需要根据目标(记录集或者表)建立对应的虚拟表。SQLite会读取对应的数据,进行分词,组成一个B树。为了存储B树,会构建三个真实表。这三个表均以虚拟表的名字为前缀,并分别以_content、_segments、_segdir。下面依次介绍这三个表:
后缀为_content的表保存真实的数据内容。每条记录都有docid和docment两列构成。其中,docid是记录编号。document保存具体的内容。每个document都是一个B树。
后缀为_segments的表保存B树的非根节点。每个记录都包括blockid和block两列。
后缀为_segdir的表只保存B树的根节点。