fulltext全文索引的使用
Fulltext全文索引
Fulltext相关属性
查看数据库关于fulltext的配置
SHOW VARIABLES LIKE 'ft%'; -- ft就是FullText的简写

ft_boolean_syntax
Fulltext用法
MATCH (col1, col2,...) AGAINST (expr [search_modifier]) -- where条件后使用
三种搜寻方式
跟在against括号中expr 的后面。
IN BOOLEAN MODE
expr里有特殊字符辅助特殊的搜寻语法。
不剔除50%以上符合的row。
不自动以相关性反向排序。
可以对没有FULLTEXT index的字段进行搜寻,但会非常慢。
限制最长与最短的字符串。
套用Stopwords。
IN NATURAL LANGUAGE MODE
string就是要搜寻的字符串。
没有特殊字符。
IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION / WITH QUERY EXPANSION
Fulltext遇到的问题
多个以uuid分割的拼接字符串
当用match against时会查出其他所有不相关的,-变成了一个分隔符,将uuid分割成很多部分,包含其中一部分都会被查出来。
解决方法
select temp.* from
(
select * from `pay_hisory` where match(leavingId) against('fc60c2aa-fa98-4b0c-8d46-98b8dc9ebc24') -- 先把所有的查出来,作为子表
) as temp
where temp.leavingId = 'fc60c2aa-fa98-4b0c-8d46-98b8dc9ebc24' --再查询精确的id,无意中发现mysql5.6这样能查到,mysql5.7不可以;
上面这种在mysql5.6没问题explain为两条,但是到了mysql5.7,exlpain会变成一个simple
select * from
(
select * from `pay_hisory` where match(leavingId) against('9a26175e-9ddf-4826-bd10-00d52067c62d') and 1=1
) as a
where leavingId like '%9a26175e-9ddf-4826-bd10-00d52067c62d%'; -- mysql5.7要用like
fulltext全文索引的使用的更多相关文章
- MySQL索引结构之Hash索引、full-text全文索引(面)
Hash索引 主要就是通过Hash算法(常见的Hash算法有直接定址法.平方取中法.折叠法.除数取余法.随机数法),将数据库字段数据转换成定长的Hash值,与这条数据的行指针一并存入Hash表的对应位 ...
- mysql FullText全文索引的问题
今天有同学问题,搜索ip的时候怎样能把 select ip from tabelx where ip like '%192.168.0.1%' 这种句子的性能优化. 的确,使用 like %x 的方式 ...
- mysql全文索引:fulltext
fulltext全文索引 要使用全文索引,不仅需要把某个字段的索引类型设置为fulltext,还需要修改mysql配置文件: [mysqld] ft_wordlist_charset #表示词典的字符 ...
- Mysql索引介绍及常见索引(主键索引、唯一索引、普通索引、全文索引、组合索引)的区别
Mysql索引概念:说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不是越多越好,假如这本书1000页,有500也是目录,它当然效率低,目录是要 ...
- Mysql主键索引、唯一索引、普通索引、全文索引、组合索引的区别
原文:Mysql主键索引.唯一索引.普通索引.全文索引.组合索引的区别 Mysql索引概念: 说说Mysql索引,看到一个很少比如:索引就好比一本书的目录,它会让你更快的找到内容,显然目录(索引)并不 ...
- MYSQL的索引类型:PRIMARY, INDEX,UNIQUE,FULLTEXT,SPAIAL 有什么区别?各适用于什么场合?
一.介绍一下索引的类型 Mysql常见索引有:主键索引.唯一索引.普通索引.全文索引.组合索引PRIMARY KEY(主键索引) ALTER TABLE `table_name` ADD PRIMAR ...
- 温故而知新-mysql的一些语法show,describe,explain,fulltext
1 show show tables; 显示数据库的所有表 show databases; 显示所有数据库 show columns from table; 显示表的所有列 show grants f ...
- 一个高级的J2E工程师需要面对MySQL要有那些基本功夫呢<上>
1. MySQL的架构介绍1.1 MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司. MySQL是一种关联数据库管理系统,将数据保存在不 ...
- mysql 添加索引 mysql 创建索引
1.添加PRIMARY KEY(主键索引) mysql>ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` ) 2.添加UNIQUE(唯一索引 ...
随机推荐
- 用JAVA把内存里的二进制文件打包成ZIP包
import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.ut ...
- idea2017显示maven Project菜单
右侧就出现 maven project菜单了.
- C++ std::map 屏蔽排序
转载:https://blog.csdn.net/sendinn/article/details/96286849 最近在项目中用标准库中的关联性容器map,但知道map默认升序的,但在一个需求时又不 ...
- 在 json4s 中自定义CustomSerializer
到目前为止,Scala 环境下至少存在6种 Json 解析的类库,这里面不包括 Java 语言实现的 Json 类库.所有这些库都有一个非常相似的抽象语法树(AST).而 json4s 项目旨在提供一 ...
- 解决SQL Server 阻止了对组件Ad Hoc Distributed Queries访问的方法
来源:http://www.htmer.com/article/922.htm 今天单位一ASP.NET网站,里面有个功能是导出数据,发现一导出就报错,报错内容是:SQL Server 阻止了对组件 ...
- 使用leaflet绘制geoJson中国边界
绘制中国边界 代码如下: function drawChina() { //设置样式 var myStyle = { "color": "#00f", &quo ...
- MacOSX 虚拟机与宿主机的网络配置
环境:MacOSX.VMware Fusion11.5.CentOS6 比较重要的两个网卡 安装虚拟机后,宿主机会多出几个网卡,其中vmnet1对应的Bridge(桥接方式),vmnet8对应NAT方 ...
- resources-plugin-2.6.pom.part.lock (没有那个文件或目录)
由于 自定义 maven 仓库没权限 /home/repository 自定义目录 [root@localhost Service]# cat /etc/group|grep jenkins jenk ...
- tomcat安全基线
为了符合tomcat安全基线,需要做一下加固: 1.管理用户的密码加密:<摘要算法加密tomcat登录密码> 管理用户在conf/tomcat-users.xml中配置,密码一般是明文形式 ...
- 在Eclipse中设置中文JavaDOC
参考: 在Eclipse中设置中文JavaDOC