全文索引-FullText

2024-05-24 10:12
文章标签 fulltext 全文索引

本文主要是介绍全文索引-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的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998109

相关文章

mysql索引三(全文索引)

前面分别介绍了mysql索引一(普通索引)、mysql索引二(唯一索引)。 本文学习mysql全文索引。 全文索引(也称全文检索)是目前搜索引擎使用的一种关键技术。它能够利用【分词技术】等多种算法智能分析出文本文字中关键词的频率和重要性,然后按照一定的算法规则智能地筛选出我们想要的搜索结果。 在MySql中,创建全文索引相对比较简单。例如:我们有一个文章表(article),其中有主键ID(

MySQL8 全文索引

文章目录 创建索引使用索引总结 创建索引   之前未尝试过使用MySQL8的全文索引,今天试一试看看什么效果,否则跟不上时代了都。   创建索引非常简单,写句SQL就行。 create table goods(id integer primary key auto_increment,name varchar(255) comment '名称',description text

【MySQL精通之路】全文搜索(7)-全文索引-添加用户定义的排序规则

主博客: 【MySQL精通之路】全文搜索功能-CSDN博客 警告 不推荐使用用户定义的排序规则; 在MySQL的未来版本中将删除对它们的支持。 从MySQL 8.0.33开始,服务器会对SQL语句中使用COLLATE user_defined_collection发出警告; 当服务器启动时,“--collocation-server”设置为 等于用户定义的排序规则的名称时,

全文索引----中文分词器mmseg4j

通常情况下,我们根据整个字段来索引数据,字段最长时,也不过十个字;但是还有一种情况,如果我们索引的是一篇文章呢?这时候如何处理这个字段,分词器很好的解决了这个问题。           solr服务器默认为我们提供了分词组件,但是Apache Solr提供的分词器对中文不太友好,举例如下:           它把整个句子的每个字都给分开了,这样如果索引一篇文章的

MySQL索引详解【B+Tree索引、哈希索引、全文索引、覆盖索引】

前段时间面试每次提到索引,我就巴拉巴拉说一堆,然后到了说说你理解的 B+tree索引我就懵逼了。 直接说B+tree可能并不是很好理解,下面我们从最简单的二叉查找树开始慢慢循序渐进。 一、B+Tree索引 1、二叉查找树 在最开始学习树的时候,我们一定学习过这样一种结构的二叉树根结点大于它的左节点,小于它的右节点。 如果我们要在上述的二叉树里面去查询 6 ,只需要三步即可 找到

neo4j使用详解(十五、索引之语义索引<全文索引>——最全参考)

Neo4j系列导航: neo4j安装及简单实践 cypher语法基础 cypher插入语法 cypher插入语法 cypher查询语法 cypher通用语法 cypher函数语法 neo4j索引及调优 与搜索性能索引不同,语义索引捕获数据库中数据的语义或上下文。这是通过返回近似分数来完成的,该近似分数指示查询字符串与数据库中的数据之间的相似性。 Neo4j 中有两个可用的语义索引:

mysql必知必会--学习笔记(11)--全文本搜索FULLTEXT,Match,Against,布尔全文搜索

1、mysql的引擎中MYISAM支持全文本搜索,而InnoDB不支持文本搜索。 2、为了进行全文本搜索,必须索引被搜索的列,而且要随着数据的改变不断地重新索引。 一般在创建表时启用全文本搜索。 CREATE TABLE 语句接受 FULLTEXT 子句,它给出被索引列的一个逗号分隔的列表。 在定义之后,MySQL自动维护该索引。在增加、更新或删除行时,索引随之自动更新。 3、在索引之后,

SqlServer 全文索引

在SQL Server中,全文检索功能可以使用CONTAINS或FREETEXT函数进行查询。以下是使用这些函数的基本示例: 1、使用CONTAINS函数: SELECT *FROM table_nameWHERE CONTAINS(column_name, 'search_term'); 2、使用FREETEXT函数: SELECT *FROM table_nameWHERE F

wordpress使用coreseek(sphinx)全文索引

wordpress的默认搜索是采用mysql的like,但是当我们整个网站的数据非常大的时候,mysql的like的效率将会非常慢,而且wordpress本身的性能也是比较低的,而且mysql like的准确率也不高,前一段时间本站使用了wordpress整合Google自定义搜索但是发现Google经常被墙,很不爽,决定改之。今天wordpress教程网跟大家分享下如何在wordpress中使

sql server 2008全文索引干扰词示例

处理网站查询包含”之”字出现”全文搜索条件中包含干扰词”现象的总结:author:perfectactionSql server 2008全文索引的干扰词表默认在Resource库系统表内,无法更改,但sql2008提供了自定义干扰词表的功能,可绑定到某个全文索引上。相关操作如下:--sql server 2008 全文索引建立及创建全文非索引字表(干扰词表)--以dbtest的user_info