Full-text 索引

来源:互联网 发布:淘宝信用贷款怎么查看 编辑:程序博客网 时间:2024/05/16 12:21

8.4.3  Full-text 索引

Full-text 索引也就是全文索引,目前在 MySQL 中仅有 MyISAM 存储引擎支持它,但并不是所有的数据类型都支持。目前,仅有CHAR、VARCHAR和TEXT这三种数据类型的列可以建 Full-text 索引。

一般来说,Fulltext 索引主要用来替代效率低下的 LIKE '%***%' 操作。实际上,Full-text 索引并不是只能简单地替代传统的全模糊 LIKE 操作,它能通过多字段组合的 Full-text 索引一次全模糊匹配多个字段。

Full-text 索引和普通的 B-Tree 索引实现区别较大,虽然它同样是以 B-Tree 形式来存放索引数据的,但是它并不是通过字段内容的完整匹配,而是通过特定的算法,将字段数据进行分割后再进行的索引。一般来说 MySQL 系统会按照最小4个字节来分隔。在整个 Full-text 索引中,存储内容被分为两部分,一部分是分隔前的索引字符串数据集合,另一部分是分隔后的词(或者词组)索引信息。所以,Full-text 索引中,真正在 B-Tree 索引结构的叶节点中的并不是表中的原始数据,而是分词之后的索引数据。在 B-Tree 索引的节点信息中,存放了各个分隔后的词信息,以及指向包含该词的分隔前字符串信息在索引数据集合中的位置信息。

Full-text 索引不仅能实现模糊匹配查找,还能实现基于自然语言的匹配度查找。当然,这个匹配度到底有多准确就需要读者自行验证了。Full-text 通过一些特定的语法信息,针对自然语言做了各种相应规则的匹配,最后给出了非负的匹配值。

此外,有一点须要大家注意,MySQL 目前的 Full-text 索引在中文支持方面还不太好,须要借助第三方的补丁或插件来完成,且 Full-text 的创建所消耗的资源也比较大,所以在应用于实际生产环境之前还是尽量做好评估。

由于Full-text 的实际使用方法不是本书的重点,感兴趣的读者可以自行参阅 MySQL 关于 Full-text的使用手册,以了解更为详尽的信息。

原创粉丝点击