本文主要是介绍全文索引-FullText,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、数据结构
倒排索引:存储单词与文档的映射
1、正向索引
正向索引结构如下:
文档1的ID→单词1的信息;单词2的信息;单词3的信息…
文档2的ID→单词3的信息;单词2的信息;单词4的信息…
2、反向索引
反向索引结构如下:
单词1→文档1的ID;文档2的ID;文档3的ID…
单词2→文档1的ID;文档4的ID;文档7的ID…
3、倒排索引
通过倒排索引,可以根据单词快速获取包含这个单词的文档列表。倒排索引主要由两个部分组成:“单词词典”和“倒排文件”。
具体示例可参考如下博客
Elasticsearch数据结构——倒排索引_elasticsearch倒排索引-CSDN博客
二、使用方法
1、创建索引
create table fulltext_test (id int(11) NOT NULL AUTO_INCREMENT,content text NOT NULL,tag varchar(255),PRIMARY KEY (id),FULLTEXT KEY content_tag_fulltext(content,tag) // 创建联合全文索引列
) ENGINE=MyISAM DEFAULT CHARSET=utf8;create fulltext index content_tag_fulltexton fulltext_test(content,tag);alter table fulltext_testadd fulltext index content_tag_fulltext(content,tag);
2、修改索引
先删除,再新建
3、删除索引
drop index content_tag_fulltexton fulltext_test;alter table fulltext_testdrop index content_tag_fulltext;
4、使用索引
select * from 表名 where match (字段名) against (‘检索内容’);match() 函数中指定的列必须和全文索引中指定的列完全相同,否则就会报错,无法使用全文索引select * from fulltext_test where match(content,tag) against('xxx xxx');
三、全文索引的优点
1、MySQL不可以like左匹配,一些字段无法匹配
2、MySQL在大量数据的情况下,全文索引的匹配效率更高,但可能存在精度问题
四、全文索引在MySQL中的使用限制
1、MySQL 5.6 以前的版本,只有 MyISAM 存储引擎支持全文索引
2、MySQL 5.6 及以后的版本,MyISAM 和 InnoDB 存储引擎均支持全文索引
3、只有字段的数据类型为 char、varchar、text 及其系列才可以建全文索引
五、全文检索建议使用ElasticSearch
这篇关于全文索引-FullText的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!