mysql全文索引的原理

本文介绍了全文检索技术的核心内容,包括如何对文本进行分词及建立索引的数据结构。讨论了二元分词法、最大匹配法和统计方法等分词技术,并解释了倒排索引的概念及其工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

全文检索是对大数据文本进行索引,在建立的索引中对要查找的单词进行进行搜索,定位哪些文本数据包括要搜索的单词。因此,全文检索的全部工作就是建立索引和在索引中搜索定位,所有的工作都是围绕这两个来进行的。

建立全文索引中有两项非常重要,一个是如何对文本进行分词,一是建立索引的数据结构。分词的方法基本上是二元分词法、最大匹配法和统计方法。索引的数据结构基本上采用倒排索引的结构。

分词的好坏关系到查询的准确程度和生成的索引的大小。在中文分词发展中,早期经常使用分词方式是二元分词法,该方法的基本原理是将包含中文的句子进行二元分割,不考虑单词含义,只对二元单词进行索引。因此该方法所分出的单词数量较多,从而产生的索引数量巨大,查询中会将无用的数据检索出来,好处是算法简单不会漏掉检索的数据。之后又发展出最大匹配分词方法,该方法又分为正向最大分词和逆向最大分词。其原理和查字典类似,对常用单词生成一个词典,分析句子的过程中最大的匹配字典中的单词,从而将句子拆分为有意义的单词链。最大匹配法中正向分词方法对偏正式词语的分辨容易产生错误,比如“首饰和服装”会将“和服”作为单词分出。达梦数据库采用的是改进的逆向最大分词方法,该分词方法较正向正确率有所提高。最为复杂的是通过统计方式进行分词的方法。该方法采用隐式马尔科夫链,也就是后一个单词出现的概率依靠于前一个单词出现的概率,最后统计所有单词出现的概率的最大为分词的依据。这个方法对新名词和地名的识别要远远高于最大匹配法,准确度随着取样文本的数量的增大而提高。

 二元分词方法和统计方法是不依赖于词典的,而最大匹配法分词方法是依赖于词典的,词典的内容决定分词结构的好坏。

全文检索的索引被称为倒排索引,之所以成为倒排索引,是因为将每一个单词作为索引项,根据该索引项查找包含该单词的文本。因此,索引都是单词和唯一记录文本的标示是一对多的关系。将索引单词排序,根据排序后的单词定位包含该单词的文本。

MySQL全文索引底层原理是基于倒排索引的。在MySQL中,全文索引只支持英文,如果需要对中文进行全文检索,可以使用sphinx的中文版(coreseek)。 底层原理包括MySQL缓冲池、索引的底层原理、页分裂页合并、B树的优势以及索引操作等。 MySQL缓冲池是用于管理数据页的,包括数据页数据页管理、free链表、flush链表、哈希表以及LRU链表。 索引的底层原理分为InnoDB索引和MyISAM索引。InnoDB索引包括行记录页内索引、页外索引页、B树结构、聚簇索引以及InnoDB索引文件。而MyISAM索引包括聚簇索引VS非聚簇索引以及MyISAM索引文件。 页分裂页合并是指当索引的数据页满了之后,需要进行分裂操作,将数据分散到新的数据页中,或者当数据删除时,页空间过多时需要进行合并操作,将数据整理到更少的页中。 B树是一种常用的索引数据结构,相比于其他数据结构如AVL树、红黑树、哈希表和跳表,B树具有较好的平衡性和高效的插入、删除和查找性能,因此被广泛应用于索引中。 索引操作包括创建索引、删除索引、查看索引、全文索引和复合索引最左匹配原则等。创建索引默认主键,删除索引是指删除已经创建的索引,查看索引可以使用EXPLAIN语句来查看索引的使用情况。全文索引用于对文本内容进行全文检索,而复合索引最左匹配原则是指在复合索引中,只有最左边的列被使用时索引才会生效。 综上所述,MySQL全文索引底层原理是基于倒排索引的,具体包括MySQL缓冲池、索引的底层原理、页分裂页合并、B树的优势以及索引操作等方面的内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [MYSQL索引底层原理](https://blog.youkuaiyun.com/winy1986/article/details/125758304)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [详解MySQL索引底层原理](https://blog.youkuaiyun.com/Wyf_Fj/article/details/126415270)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值