什么是全文索引
全文索引是將存儲于數(shù)據(jù)庫中的整本書或整篇文章中任意內(nèi)容信息查找出來的技術(shù)。從InnoDB1.2.x版本開始便開始支持全文索引。
倒排索引
全文索引通常用倒排索引來實現(xiàn),倒排索引和BTree一樣,是一種索引結(jié)構(gòu),它在輔助表中存儲了單詞與單詞自身在一個或多個文檔中所在位置之間的映射,其擁有兩種表現(xiàn)形式:
- inverted file idnex:{單詞,單詞文檔所在ID}
- full inverted index:{單詞,(單詞文檔所在ID,具體文檔中的位置)}
例如有如下表t:

表t
用inverted file idnex方式存儲內(nèi)容如下所示:

inverted file idnex方式
用full inverted index方式存儲內(nèi)容如下所示:

full inverted index方式
相比之下,full inverted index會占用更多空間,但能更好的定位數(shù)據(jù),并擴充其他一些搜索特性。
InnoDB全文檢索
InnoDB全文檢索采用full inverted index方式,并將(DocumentId,Position)視為一個“ilist”,因此在全文檢索表中有兩個列:word字段和ilist字段。為了提高檢索性能,InnoDB中共有6張輔助表。
參考文章
數(shù)據(jù)庫系統(tǒng)實現(xiàn)