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樹的根節點。