modifier的值为in boolean mode的时候,可以使用布尔全文检索。在布尔全文检索中,有些字符在检索字符串的开头或结尾会有特殊含义。
在下面的示例中,+和-操作符表明在匹配的时候,单词必须存在和不存在。所以是检索含有"MySQL"但是不含有"YourSQL"的行。

mysql> SELECT
-> *
-> FROM
-> articles
-> WHERE
-> MATCH (title , body) AGAINST ('+MySQL -YourSQL' IN BOOLEAN MODE);
+----+-----------------------+-------------------------------------+
| id | title | body |
+----+-----------------------+-------------------------------------+
| 6 | MySQL Security | When configured properly, MySQL ... |
| 1 | MySQL Tutorial | DBMS stands for DataBase ... |
| 2 | How To Use MySQL Well | After you went through a ... |
| 3 | Optimizing MySQL | In this tutorial we will show ... |
| 4 | 1001 MySQL Tricks | 1. Never run mysqld as root. 2. ... |
+----+-----------------------+-------------------------------------+
5 rows in set (0.00 sec) mysql>

布尔全文检索的操作符:

+

  表示该word必须存在

-

  表示该word必须不被排除

(no operator)

  表示word是可选的,如果出现,其相关性会更高

@distance

  仅仅适用于innodb。测试两个或多个word出现的距离是否在distance的值之内,distance的单位是word个数。

  下面测试的结果是多个单词之间最远的距离要在distance之间。(和姜承饶的书结果不一致)

mysql> select * from articles where id=12;
+----+-----------------+--------------------------------------------------------------+
| id | title | body |
+----+-----------------+--------------------------------------------------------------+
| 12 | BOOLEN Tutorial | word1,word2,word3,word4,word5,word6,word7,word8,word9,word10 |
+----+-----------------+--------------------------------------------------------------+
1 row in set (0.00 sec) mysql> SELECT * FROM articles WHERE MATCH (title , body) AGAINST ('"word2 word4 word9" @9' IN BOOLEAN MODE);
+----+-----------------+--------------------------------------------------------------+
| id | title | body |
+----+-----------------+--------------------------------------------------------------+
| 12 | BOOLEN Tutorial | word1,word2,word3,word4,word5,word6,word7,word8,word9,word10 |
+----+-----------------+--------------------------------------------------------------+
1 row in set (0.00 sec) mysql> SELECT * FROM articles WHERE MATCH (title , body) AGAINST ('"word2 word4 word9" @8' IN BOOLEAN MODE);
+----+-----------------+--------------------------------------------------------------+
| id | title | body |
+----+-----------------+--------------------------------------------------------------+
| 12 | BOOLEN Tutorial | word1,word2,word3,word4,word5,word6,word7,word8,word9,word10 |
+----+-----------------+--------------------------------------------------------------+
1 row in set (0.00 sec) mysql> SELECT * FROM articles WHERE MATCH (title , body) AGAINST ('"word2 word4 word9" @7' IN BOOLEAN MODE);
Empty set (0.00 sec) mysql> SELECT * FROM articles WHERE MATCH (title , body) AGAINST ('"word2 word4 word9" @6' IN BOOLEAN MODE);
Empty set (0.00 sec) mysql>

 

>

  表示出现该单词时增加相关性

<

  表示出现该单词时降低相关性

 ( )

  子表达式

~

  表示允许出现该单词,但是出现时相关性为负

*

  表示以该单词开头的单词,如lik*表示lik、like等

  匹配双引号中的字面值,全文检索引擎会将双引号中的内容按照单词分开,非单词字符不用匹配,比如"test phrase"匹配"test,phrase"

 

MySQL -- 全文检索(布尔全文检索)的更多相关文章

  1. Mysql 如何实现全文检索,关键词跑分

    一.前言 今天一个同事问我,如何使用 Mysql 实现类似于 ElasticSearch 的全文检索功能,并且对检索关键词跑分?我当时脑子里立马产生了疑问?为啥不直接用es呢?简单好用还贼快.但是听他 ...

  2. mysql 自带全文检索

    对于一些简单的检索可以通过mysql自带的全文索引及 MATCH AGAINST 查询语句实现.实验步骤如下.1.建表DROP table IF exists con_video_file_des_t ...

  3. Mysql支持中文全文检索的插件mysqlcft-应用中的问题

    MySQL目前版本的全文检索没有对中文很好的支持,但可以通过安装mysqlcft插件来实现,具体的安装使用方法:http://blog.s135.com/post/356/ mysqlcft的官方网站 ...

  4. MySQL -- 全文检索(自然语言全文检索)

    自然语言全文本检索缺省或者modifier被设置为in natural language mode,都是进行自然语言检索.对于表中的每一行,match()都会返回一个关联值. mysql> CR ...

  5. MySQL中InnoDB全文检索

    InnoDB存储引擎从1.2.x开始支持全文索引技术,其采用full inverted index的方式.在InnoDB存储引擎中,将(DocumentID,Postition)视为一个ilist.因 ...

  6. php + mysql + sphinx 的全文检索(2)

    简单 使用php api 去查询 sphinx 的索引数据 $sphinx = new SphinxClient();                 $sphinx->SetServer (  ...

  7. MySQL全文检索笔记 转载

    1. MySQL 4.x版本及以上版本提供了全文检索支持,但是表的存储引擎类型必须为MyISAM,以下是建表SQL,注意其中显式设置了存储引擎类型 CREATE TABLE articles ( id ...

  8. MySql全文检索使用详解

    实际项目中经常会有一个字段存储多个值用逗号分隔的场景,当分开查询的时候,使用模糊查询会非常影响效率.mysql提供了全文检索函数可以有效解决这一问题: 1.数据结构 ID CODE MSG 1 111 ...

  9. MySQL 5.7 中文全文检索

    MySQL 5.7 中文全文检索 在 MySQL 5.7.6 之前,全文索引只支持英文全文索引,不支持中文全文索引,需要利用分词器把中文段落预处理拆分成单词,然后存入数据库.从 MySQL 5.7.6 ...

随机推荐

  1. IntelliJ - idea15.0.2 破解方法

    由于idea 15版本更换了注册方式,只能通过联网激活,所以现在不能通过简单的通用注册码进行离线注册了, 虽然可以继续用14版本,但是有新版本却无法尝试让强迫症也是异常抓狂. 通过度娘我找到了一个破解 ...

  2. mysql查询结果单位换算后小数位数的保留方式

    1.调用mysql自带的格式化小数函数format(x,d) 例如: select format(23456.789,2);   select formate(salary,2); 输出: 23,45 ...

  3. 我的webrequest经验

    1 webrequest 是什么:编程方式模拟web请求,利用webrequest可以实现 相当于一个浏览器请求一个网页的效果,但是它始终是模拟请求, 与浏览器输入框输入网址请求不一样. 2 程序设计 ...

  4. Dockerfile 指令 ADD 和 COPY介绍

    一.ADD指令 ADD指令的功能是将主机构建环境(上下文)目录中的文件和目录.以及一个URL标记的文件 拷贝到镜像中. 其格式是: ADD  源路径  目标路径 如: #test FROM ubunt ...

  5. VS2012 No exports were found that match the constraint

    1:打开VS2012新建工程以及打开项目报一下错误提示 2:是由于.NET Framework 4.5 补丁造成的 从:https://www.microsoft.com/zh-CN/download ...

  6. 默认的Sublime 3中没有Package Control

    https://packagecontrol.io/installation#st3 (官方) 原来Subl3安装Package Control很麻烦,现在简单的方法来了 一.简单的安装方法 使用Ct ...

  7. SHELL 循环获取日期以及FOR使用

    ;i<=;i++)); do PYTHONPATH=lib/ bin/cupid -c conf/config.cfg -u http://shop33220311.taobao.com/?tb ...

  8. Memcached常用命令及使用说明——netcat

    数据存储(假设key为test,value为12345) printf "set test 0 0 5\r\n12345\r\n" | nc 127.0.0.1 12000 STO ...

  9. vuejs组件交互 - 03 - vuex状态管理实现组件交互

    组件交互模式的使用场景 简单应用直接使用props down,event up的模式就可以了 小型应用使用事件中心模式即可 中大型应用使用vuex的状态管理模式 vuex 包含要管理的应用数据和更新数 ...

  10. 算法笔记_223:打印回型嵌套(Java)

    目录 1 问题描述 2 解决方案   1 问题描述 *********** * * * ******* * * * * * * * *** * * * * * * * * * * *** * * * ...