MySQL下全文索引
一种特殊的索引,它会把某个数据表的某个数据列出现过的所有单词生成一份清单。
alter table tablename add fulltext(column1,column2)
只能在MyISAM数据表中创建
少于3个字符的单词不会被包含在全文索引里,可以通过修改my.cnf修改选项
ft_min_word_len=3
重新启动MySQL服务器,用
repair table tablename quick 为有关数据表重新生成全文索引
select * from tablename
where match(column1,column2) against('word1 word2 word3')>0.001
match ... against
把column1,column2数据列中至少包含word1,word2,word3三个单词之一的数据记录查找到,在关键字match后的数据列必须
跟创建全文索引的数据列相同,检索词不区分大小写和先后顺序,少于3个字符的单词通常被忽略。match... against
...表达式返回一个浮点数作为它本身的求值结果,这个数字反映了结果记录与被检索单词的匹配程度。如果没有匹配到任何记录,或者匹配到的结果记录太多反
而被忽略,表达式将返回0,表达式>0.001的作用是排除match的返回值太小的结果记录。
select *,match(column1,column2) against ('word1 word2 word3') as mtch
from tablename
having mtch>0.01
order by mtch desc
limit 5
找出最匹配的5条记录,在where字句中不能使用假名,所以用having
布尔全文搜索的性能支持以下操作符:
- +word:一个前导的加号表示该单词必须 出现在返回的每一行的开头位置。
- -word: 一个前导的减号表示该单词一定不能出现在任何返回的行中。
- (无操作符):在默认状态下(当没有指定 + 或–的情况下),该单词可有可无,但含有该单词的行等级较高。这和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程序时的运作很类似。
- > <这两个操作符用来改变一个单词对赋予某一行的相关值的影响。 > 操作符增强其影响,而 <操作符则减弱其影响。请参见下面的例子。
- ( )括号用来将单词分成子表达式。括入括号的部分可以被嵌套。
- ~word:一个前导的代字号用作否定符, 用来否定单词对该行相关性的影响。 这对于标记“noise(无用信息)”的单词很有用。包含这类单词的行较其它行等级低。
- word* :搜索以word开头的单词,只允许出现在单词的末尾
- "word1 word" :给定单词必须出现在数据记录中,先后顺序也必须匹配,区分字母大小写
select * from tablename
where match(column1,column2) against ('+word1 +word2 -word3' in boolean mode')
布尔检索只能返回1或者0,不再返回表示匹配程度的浮点数
全文索引的缺陷:
- 数据表越大,全文索引效果好,比较小的数据表会返回一些难以理解的结果。
- 全文检索以整个单词作为匹配对象,单词变形(加上后缀,复数形式),就被认为另一个单词。
- 只有由字母,数字,单引号,下划线构成的字符串被认为是单词,带注音符号的字母仍是字母,像C++不再认为是单词
- 不区分大小写
- 只能在MyISAM上使用
- 全文索引创建速度慢,而且对有全文索引的各种数据修改操作也慢
MySQL下全文索引的更多相关文章
- MySQL中文全文索引插件 mysqlcft 1.0.0 安装使用文档[原创]
[文章+程序 作者:张宴 本文版本:v1.0 最后修改:2008.07.01 转载请注明原文链接:http://blog.zyan.cc/post/356/] MySQL在高并发连接.数据库记录数较多 ...
- MySQL使用全文索引(fulltext index)---高性能
转载地址:https://blog.csdn.net/u011734144/article/details/52817766/ 1.创建全文索引(FullText index) 旧版的MySQL的全文 ...
- MySQL使用全文索引(fulltext index)
1.创建全文索引(FullText index) 旧版的MySQL的全文索引只能用在MyISAM表格的char.varchar和text的字段上. 不过新版的MySQL5.6.24上InnoDB引擎也 ...
- MySQL 之全文索引
最近在复习数据库索引部分,看到了 fulltext,也即全文索引,虽然全文索引在平时的业务中用到的不多,但是感觉它有点儿意思,所以花了点时间研究一下,特此记录. 引入概念通过数值比较.范围过滤等就可以 ...
- mysql下sql语句 update 字段=字段+字符串
mysql下sql语句 update 字段=字段+字符串 mysql下sql语句令某字段值等于原值加上一个字符串 update 表明 SET 字段= 'feifei' || 字段; (postgr ...
- mysql开启全文索引功能
注意:全文检索模块需要mysql开启全文索引功能,开启方法:修改mysql配置文件:window服务器为my.ini,linux服务器为my.cnf,在 [mysqld] 后面加入一行“ft_min_ ...
- Mysql下在某一列后即表的某一位置添加新列的sql语句
Mysql简介 MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤 ...
- mysql下的SELECT INTO语句
在mysql下使用SELECT INTO语句会产生ERROR 1327 (42000): Undeclared variable:new_tablename 此时要使用: CREATE TABLE C ...
- MySQL下创建数据库以及授权用户
一.新建数据库 1.首先登录MySQL:(输入 mysql -u root -p 命令,然后输入密码按回车即可) 2.在mysql> 下输入如下命令,回车,即可创建数据库 (test为数据库名) ...
随机推荐
- learning to rank
Learning to Rank入门小结 + 漫谈 Learning to Rank入门小结 Table of Contents 1 前言 2 LTR流程 3 训练数据的获取4 特征抽取 3.1 人工 ...
- Android四大组件之Activity详解——创建和启动Activity
前面我们已经对Activity有过简单的介绍: Android开发——初始Activity Android开发——响应用户事件 Android开发——Activity生命周期 先来看一下最终结果 项目 ...
- Bete冲刺第一阶段
Bete冲刺第一阶段 今日工作: github团队协作流程 web:调整dao层设计,增加新的dao组件 客户端:之前遗留的界面跳转的BUG 目前所遇问题: 第一,COCOAPODS的安装上还是有点问 ...
- strut2的拦截器之对request和session的封装
本文主要内容是对 implements Interceptor 这种方式的探索 前提是需要了解:责任链模式 对下面这句代码的理解: Map<String, Object> session ...
- web单页应用(1)--第一个SPA
<!doctype html> <html> <head> <title>第一个SPA</title> <style type=&qu ...
- ubuntu下启动、关闭tomcat,查看tomcat运行日志
启动:一般是执行sh tomcat/bin/startup.sh 停止:一般是执行sh tomcat/bin/shutdown.sh查看:执行ps -ef |grep tomcat 输出如下 *** ...
- Maven-eclipse运行maven命令
右击项目,点击Run as,如下图: 即可看到有很多现有的maven命令,点击即可运行,并在控制台可以看到运行信息 如果你想运行的maven命令在这里没有找到,点击Maven build创建新的命令, ...
- 控件(按钮类): ButtonBase, Button, HyperlinkButton, RepeatButton, ToggleButton, AppBarButton, AppBarToggleButton
介绍背水一战 Windows 10 之 控件(按钮类) ButtonBase Button HyperlinkButton RepeatButton ToggleButton AppBarButton ...
- python 冒泡排序
冒泡排序: 相邻的两个数字先进行比较,也就是li[0]和li[1]进行比较,如果不是大于的关系,就继续依次进行li[1]和li[2]比较,进行交换然后每一次扫描得到的新列表如下: li = [11,2 ...
- asp.net mvc 缓存
webConfig 里面配置缓存时间 <caching> <outputCacheSettings> <outputCacheProfiles> <add n ...