什么是全文索引
全文索引是将存储于数据库中的整本书或整篇文章中任意内容信息查找出来的技术。从InnoDB1.2.x版本开始便开始支持全文索引。
倒排索引
全文索引通常用倒排索引来实现,倒排索引和BTree一样,是一种索引结构,它在辅助表中存储了单词与单词自身在一个或多个文档中所在位置之间的映射,其拥有两种表现形式:
- inverted file idnex:{单词,单词文档所在ID}
- full inverted index:{单词,(单词文档所在ID,具体文档中的位置)}
例如有如下表t:
用inverted file idnex方式存储内容如下所示:
用full inverted index方式存储内容如下所示:
相比之下,full inverted index会占用更多空间,但能更好的定位数据,并扩充其他一些搜索特性。
InnoDB全文检索
InnoDB全文检索采用full inverted index方式,并将(DocumentId,Position)视为一个“ilist”,因此在全文检索表中有两个列:word字段和ilist字段。为了提高检索性能,InnoDB中共有6张辅助表。
参考文章
数据库系统实现