« 上一篇下一篇 »

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的创建所消耗的资源也比较大,所以在应用于实际生产环境之前还是尽量做好评估。

« 上一篇下一篇 »