20200829——数据库 全文索引

前言

mysql索引可以分为:主键索引,唯一索引,普通索引,全文索引。
其中,全文索引应该是比较特殊的,它只有少数的几个存储引擎支持,且只有类型为char,varchar,text的列能建立全文索引,以前只有myisam引擎支持全文索引,现在innoDB也可以使用了。

全文索引的作用

一般情况,对于模糊查询的情况最容易想到的就是where xxx like %xxx 这样,但是在列的内容十分大的时候,like的性能就不能另人满意了。因为这个关键字不是每次都能走索引,因此全文索引就派上了用场。除了性能上的提高,全文索引提供了更灵活的服务。

1)like只进行模式匹配,全文索引却提供了一些语法语义的查询功能,会将查的字符串进行分词操作,这决定于mysql的词库。

2)全文索引可以自己设置词语最小,最大的长度,要忽略的词,这些都是可以设置的。

3)用全文索引去某个列去查询一个字符串,会返回匹配度,可以理解为匹配的关键字个数,是个浮点数

全文索引因为用上了索引,性能更高,有词库支撑可以进行分词提供了一些语义查询的功能,有词语停用表忽略某些词语,有词语最大值最小值可以灵活设置。

原理

全文索引的对象就像是一个全文集合,如果对表中的多个列建立全文索引,mysql就会将这几个列拼接成一个字符串,然后进行索引。全文索引实际上也是一个B+tree结构,不过比较特殊,它一共有两层,第一层是所有的关键字,第二层是所有关键字的一组文档指针,通俗解释全文索引结构就是:它是以关键字去找文档(行),而不是像其他一些索引以行主键来找其他列的内容。要使用全文索引,关于它的几个参数的意义一定要清楚,控制全文索引的参数都是以 ft 开头的(FullText)。查看这些参数以及它们的意义:

在这里插入图片描述
ft_boolean_syntax:表示布尔查询时的可以用的符号。改变IN BOOLEAN MODE的查询字符,不用重新启动MySQL也不用重建索引

ft_max_word_len : 最长的索引字符串,默认值为84,修改后要重建索引

ft_min_word_len : 最短的索引字符串,默认值为4,修改后要重建索引

ft_query_expansion_limit: 查询括展时取最相关的几个值用作二次查询

ft_stopword_file (built-in): 停词文件,这个文件里的词查询时会忽略掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值