mysql全文索引

由前面倒排索引延申过来,做一个学习记录,方便以后使用到对大规模文档的关键字搜索服务。

[toc]

前言

mysql索引类型

  • primary 唯一索引,不允许为null
  • NORMAL 普通非唯一索引
  • UNIQUE 表示唯一的,不允许重复的索引,可以为null
  • FULLTEXT 表示全文搜索的索引。 FULLTEXT用于搜索很长一篇文章的时候,效果最好。用在比较短的文本,如果就一两行字的,普通的INDEX 也可以
  • SPATIAL 只有MyISAM引擎支持,并且支持的不好。可以忽略

mysql索引方法

  • HASH
  • BTREE

区别详见文章1, 文章2

全文索引

我们应用里面经常要用到搜索功能,一般简单的搜索功能我们使用MySQL的关键字Like实现模糊查询即可,但使用Like语句一般不会使用到索引,在数据量大的时候效率会大大降低,亦或我们需要全文搜索的时候,这个时候索引就变得特别重要。

更多…

MySQL支持三种模式的全文检索模式:

  • 自然语言模式(IN NATURAL LANGUAGE MODE)
  • 布尔模式(IN BOOLEAN MODE)
  • 查询扩展模式 (WITH QUERY EXPANSION)

参考文档:

  1. 官方文档
  2. MySql全文索引详解
  3. 全文检索

关于索引使用的注意事项

参考: mysql索引需要了解的几个注意

总结

关于一点,全文检索,对于我们需求,也就是刚开始提到的根据视频名称或文章名称模糊查询,有没有必要使用全文检索呢?

个人看法:

  • 前期项目数据量不大,可以使用普通索引,like模糊查询解决
  • 后期数据量上来了,可以自己去维护倒排索引,定时维护,查询去查倒排索引,至于分词可能有些疑惑
  • 小规模文本(像文章名称这些),尽量避开全文索引,可能全文索引对大规模文本,效果较好

关于一个查询,可以引出一系列的知识点,这仅仅是大数据量查询的起点基础而已,后面还需要再进行知识的深入,基础知识只做备忘处理,关键在与后期在基础上的深入理解学习,才能达到融会贯通。


   转载规则


《mysql全文索引》 Will 采用 知识共享署名 4.0 国际许可协议 进行许可。
 上一篇
深入了解java虚拟机 深入了解java虚拟机
系统记录jvm相关知识点,形成系统性知识结构。 [toc] jvm是什么Java虚拟机(英语:Java Virtual Machine,缩写为JVM),一种能够运行Java bytecode的虚拟机,以堆栈结构机器来进行实做。Java
2019-04-01
下一篇 
搜索引擎算法-倒排索引 搜索引擎算法-倒排索引
由于公司需要从海量的视频资源中快速搜索到相关性高的视频,中间考虑过like的使用,由于需要取得多张表的资源并集,并进行like匹配还有其他条件的匹配,但是这样如果数据量上去的话,查询效率是极低的;然后,后面有同学提到使用维护倒排索引的方案解
2018-09-12
  目录