mysql全文索引(三)查询扩展

  1. 查询扩展原理:

    1. 开启查询扩展(query expansion)时候,进行两次查询,第一次,查出用户给定的关键词对应的记录;第二次,用第一次查出的结果里的关键词,再去查一次,把两次的结果返回给用户
  2. 实验
    1. mysql> select id,title,body from articles where match(title,body) against(‘fulltext‘ ) order by id asc;
      +----+-------------------------+---------------------------------+
      | id | title                   | body                            |
      +----+-------------------------+---------------------------------+
      |  8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a .. |
      +----+-------------------------+---------------------------------+
      1 row in set (0.00 sec)
      
      mysql> select id,title,body from articles where match(title,body) against(‘fulltext‘ with query expansion ) order by id asc;
      +----+-------------------------+-------------------------------------+
      | id | title                   | body                                |
      +----+-------------------------+-------------------------------------+
      |  1 | MySQL Tutorial          | This database tutorial ...          |
      |  2 | How To Use MySQL        | After you went through a ...        |
      |  4 | MySQL vs. YourSQL       | When comparing databases ...        |
      |  5 | MySQL Security          | When configured properly, MySQL ... |
      |  7 | 1001 MySQL Tricks       | 1. Never run mysqld as root. 2. ... |
      |  8 | MySQL Full-Text Indexes | MySQL fulltext indexes use a ..     |
      +----+-------------------------+-------------------------------------+
      6 rows in set (0.00 sec)
      

       第一次没有开启查询扩展,只有包含关键词:fulltext的记录8被查到;第二次,包含mysql,fulltext的记录全部被返回

  3.  注意:
    1. 运用这个功能,可能会搜到很多不相关的信息,因此,只有当keyword比较short的时候,才使用
  4. 参考资料:https://dev.mysql.com/doc/refman/5.7/en/fulltext-query-expansion.html
时间: 2025-01-04 02:15:06

mysql全文索引(三)查询扩展的相关文章

mysql数据库(三):查询的其他用法

一. 查询—IN的用法 语法:select ... from 表名 where 字段 a in (值b, 值c, 值d...) 等价于 select ... from 表名 where 字段a=值b or 字段a=值c or 字段a=值d; 例如,查询学生表里学生编号为1401001或者1401002或者1401003的学生信息 select * from student where id=1401001 or id=1401002 or id=1401003; select * from st

mysql全文索引之模糊查询

旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也加入了全文索引,所以具体信息大家可以随时关注官网,下面我来谈谈mysql全文索引的用法,网上很多啦,我只讲讲我所了解滴部分哈:我的mysql版本是: 新建一张表test: CREATE TABLE `test` ( `name` char(12) NOT NULL DEFAULT '', `nickname` char(12) NOT NULL D

DF学Mysql(三)——索引操作

概要: 数据库对象索引其实与书的目录非常相似,主要是为了提高从表中检索数据的速度. 由于数据存储在数据库表中,所以索引是创建在数据库表对象上的,由表中的一个字段或多个字段生成的键组成,这些键存储在数据结构(B-树或哈希表)中.通过MYSQL可以快速有效地查找与键值相关联的字段. 索引是在存储引擎中实现的,因此每种存储引擎的索引都不一定完全相同,并且每种存储引擎也不一定支持所有索引类型. 根据存储引擎定义每个表的最大索引数和最大索引长度.所有存储引擎支持每个表至少16个索引,总索引长度至少为256

MySQL知识树-查询语句

在日常的web应用开发过程中,一定会涉及到数据库方面的操作,其中查询又是占绝大部分的.我们不仅要会写查询,最好能系统的学习下与查询相关的知识点,这篇文章我们就来一起看看MySQL查询知识相关的树是什么样的. MySQL查询知识树: 一.查询的种类 二.查询的原理 三.查询的应用场景 四.查询的效率比较 五.如何进行查询优化 六.与查询相关的知识扩展 一.查询的种类 MySQL的查询可以分为内连接查询.左连接查询.右连接查询.联合查询. ①内连接是通过关联表中共有的列来匹配出记录,查询出来的数据是

mysql全文索引

一.如何设置? 如图点击结尾处的{全文搜索}即可设置全文索引,不同MYSQL版本名字可能不同. 二.设置条件1.表的存储引擎是MyISAM,默认存储引擎InnoDB不支持全文索引(新版本MYSQL5.6的InnoDB支持全文索引)2.字段类型:char.varchar和text 三.配置my.ini配置文件中添加# MySQL全文索引查询关键词最小长度限制[mysqld]ft_min_word_len = 1保存后重启MYSQL,执行SQL语句 复制代码 代码如下: SHOW VARIABLES

MySQL全文索引 FULLTEXT索引和like的区别

1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAINST语法进行查询. 为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表.比如,为了监视一个FULLTEXT索引中文本处理过程的某一方面可以查询INNODB_FT_CONFIG,INNODB_FT_INDEX_TABLE,

mysql模糊匹配查询like,regexp,in

mysql模糊匹配查询like,regexp,in 摘要 内容比较简单,无摘要. 关键词 模糊查询  like  regexp  in  contact 正文 下图是示例用到的数据表信息 MySQL提供标准的SQL模式匹配,以及一种基于象Unix实用程序如vi.grep和sed的扩展正则表达式模式匹配的格式 一.SQL模式 SQL的模式匹配允许你使用"_"匹配任何单个字符,而"%"匹配任意数目字符(包括零个字符).在 MySQL中,SQL的模式缺省是忽略大小写的.

基于mysql全文索引的深入理解

前言:本文简单讲述全文索引的应用实例,MYSQL演示版本5.5.24.Q:全文索引适用于什么场合?A:全文索引是目前实现大数据搜索的关键技术.至于更详细的介绍请自行百度,本文不再阐述.--------------------------------------------------------------------------------一.如何设置? 如图点击结尾处的{全文搜索}即可设置全文索引,不同MYSQL版本名字可能不同. 二.设置条件1.表的存储引擎是MyISAM,默认存储引擎In

python3 mysql 多表查询

python3 mysql 多表查询 一.准备表 创建二张表: company.employee company.department #建表 create table department( id int, name varchar(20) ); create table employee( id int primary key auto_increment, name varchar(20), sex enum('male','female') not null default 'male'