Mysql的全文索引实际是通过 倒排索引 来实现的。

倒排索引实际就是将要插入的文本按照相应的词进行拆分,然后额外建立一张表,存储这些出现的单词,并做出相应的统计。

创建一张表:

CREATE TABLE `article` (`id` int(10) unsigned NOT NULL AUTO_INCREMENT,`content` text,PRIMARY KEY (`id`),FULLTEXT KEY `ftk_content` (`content`)) ENGINE=Innodb DEFAULT CHARSET=utf8;

插入数据:

INSERT INTO article(id,content) values(1,'我们都是中国人,我们都爱中国!');
INSERT INTO article(id,content) values(2,'我们都是中国人,我们很骄傲!');

那么可能对全文索引字段创建如下的表格:

Id word count document_id
1 我们 4 1,2
2 中国 3 1,2
3 中国人 2 1,2
4 都是 2 1,2
5 骄傲 1 2

如果我们查询content中包含有“中国” 的数据,可以查询到上表中id=2的数据,数据中document_id中表示在article表中,主键id为1,2的行数据出现过“中国”这个词,那么数据库就可以直接使用主键id去获取实际数据了,这大大提高了查询效率。

如果查询content中包含“骄傲”的数据,则依上规则,将会获取到article表中id=2的数据中包含了这个词,那么就会使用这个id去article表中获取详细数据了。

根据上面分词表格的统计信息,我们可以在查询时设置一些规则,比如某个词在最多的文档中出现过,某个词出现的频率最高等,这就是一些全文索引查询时,所谓的“相关性”查询的基本思路。

个人对全文索引的简单理解,比较粗糙。

Mysql的全文索引原理的简单理解相关推荐

  1. Android:安卓学习笔记之OkHttp原理的简单理解和使用

    Android OkHttp使用原理的简单理解和使用 OkHttp 0.前言 1.请求与响应流程 1.1 请求的封装 1.2 请求的发送 1.3 请求的调度 1.4 请求的处理 2.拦截器 2.1 R ...

  2. mDNS 原理的简单理解

    转自:http://www.binkery.com/post/318.html mDNS 原理的简单理解 mDNS multicast DNS , 使用5353端口. 在局域网内,你要通过一台主机和其 ...

  3. mysql内部实现原理面试_理解完这些基本上能解决面试中MySql的事务问题

    事务是指逻辑上的一组操作,要么都执行,要么都不执行, 事务的特性(ACID)原子性(Atomicity):事务是不可分割的工作单元,要么都成功,要么都失败, 如果事务中一个sql语句执行失败,则已执行 ...

  4. 数据响应式的原理(简单理解 为了面试)

    首先 什么是数据响应式? vue里面的所谓的数据响应式指的是数据变了,视图跟着变 那么 数据响应式式的原理又是什么呢?(这里浅度剖析一下) 1.就是利用Object.defineProperty数据劫 ...

  5. mDNS原理的简单理解

    该文章由 Binkery 发布于 Binkery技术博客, 如转载请注明出处,该文章的链接地址为 https://www.binkery.com/archives/318.html mDNS mult ...

  6. 【Java ASQ队列同步器实现原理】简单理解

    ASQ 1.概念 2.核心结构 3.实现原理 3.1 同步状态的获取 3.2 同步队列 3.3 独占式同步状态的获取 3.4 独占式同步状态的释放 1.概念 队列同步器AbstractQueuedSy ...

  7. 深入理解MySQL索引和优化丨MySQL的核心原理

    索引介绍 文章相关视频讲解: C/C++ Linux服务器开发高级架构学习视频点击:C/C++Linux服务器开发/Linux后台架构师-学习视频 理解mysql-索引及其优化 MySQL的核心原理分 ...

  8. mysql btree索引原理_Postgres BTREE索引原理简单介绍

    本文如理解有误还请随时指出以做更正. BTREE: 介绍BTREE之前需要引入两个概念一个是B+树,一个是B+树的High-Key的概念,因为BTREE的实现主要依赖B+树.如图1-1所示(借用一下百 ...

  9. MYSQL专题-由简到繁理解索引结构

    大家可能都听过数据库索引,当然作为开发者来说其实大部分时间也用过索引.但是可能有的人知道索引是干什么的,但是对于索引的结构却不是很了解.所以这篇博客我会谈谈对索引结构的一些知识以及分享如何从零开始一层 ...

最新文章

  1. Android上成功实现了蓝牙的一些Profile
  2. ssh mysql环境搭建 myeclipse_MyEclipse整合ssh三大框架环境搭载用户注册源码下载
  3. 用Virtual PC 2007安裝Fedora Core 9
  4. Struts2配置文件【代码库】
  5. 【Webkit Blog翻译】深入研究WebRTC | 内有福利
  6. 最优化——单纯形法,单纯形表的求取
  7. linux下网站服务器,Linux下使用Apache搭建Web网站服务器(示例代码)
  8. 拓端tecdat|重庆住房租赁市场现状分析:解读出租房市场的数据密码
  9. qt打包安装程序需要先安装其他驱动或者依赖库的解决方案(Setup Factory)
  10. SQLyog数据库:主键外键代码添加
  11. packet captuer tool: snoop
  12. 离散化-利用计算机求解y=x,离散信号处理(双语)-中国大学mooc-题库零氪
  13. ST、SC、FC、LC光纤接头区别?
  14. JavaScript:实现将 base64 字符串转换为字节数组算法(附完整源码)
  15. 比Linken Sphere(林肯法球)更多更新浏览器指纹的国产防关联工具-VMLogin中文版
  16. python立体图形,python中如何画三维的图形?
  17. 极智硬件 | 国产CPU大荟萃 且听我一一道来
  18. Java项目中Ehcache的使用
  19. 基于java(springboot框架)的购物商城系统 毕业论文
  20. (Ⅲ)使用七牛云作为图床获取外链方式总结(已更换为使用PicGO+腾讯云COS)...

热门文章

  1. js实现数据的excel下载
  2. android 功能键菜单,Android菜单键和多任务键玩命 你帮谁?
  3. 深度学习优化算法:AdaGrad算法
  4. css标签不换行,CSS不换行与CSS换行
  5. leetcode 383. Ransom Note(赎金票据)
  6. linux之用户空间和内核空间
  7. Flink的各种Transformations 代码例子-- Java和Scala实现
  8. JetBrains idea(专业版)大学生免费使用申请流程_郑州轻工业大学版
  9. php开启swoole,swoole如何启动
  10. 3.ZooKeeper深度介绍