前言:
眼前大家对“mysql支持中文全文检索”大体比较注重,大家都需要分析一些“mysql支持中文全文检索”的相关文章。那么小编同时在网络上汇集了一些对于“mysql支持中文全文检索””的相关文章,希望姐妹们能喜欢,看官们快快来学习一下吧!在上一篇内容中我们描述了全文本搜索的基本概念以及基本用法,这一篇内容会描述一些更高级的用法。
在开始之前,大家可以通过以下链接去复制创建表以及添加数据的语句。
MySQL建表语句2
1.查询扩展
查询扩展用来设法放宽所返回的全文本搜索结果的范围。考虑下面一种情况:我们需要查询所有包含anvils的注释,只有一个一个注释包含词anvils,但你还想找出可能与你的搜索相关的所有行,即使他们不包含词anvils。这也是扩展查询的一项任务。在使用扩展查询时,MySQL对数据和索引进行两遍扫描来完成搜索:
(1)首先,进行一个基本的全文本搜索,找出与搜索条件匹配的所有行;
(2)其次,MySQL检查这些匹配行并选择所有有用的词。
(3)最后,MySQL再次进行全文搜索,这次不仅使用原来的条件,而且还会使用所有有用的词。
我们先举一个例子,不使用扩展查询。
select note_text from productnotes where Match(note_text) Against('anvils');
只有一行词包含anvils,所以只返回一行数据。
下面我们使用查询扩展
select note_text from productnotes where Match(note_text) Against('anvils' WITH QUERY EXPANSION);
这次结果有7行,第一行包含词anvils,因此等级最高。第二行和第三行不包含anvils,但是因为其包含第一行中的customer和recommend,所以也被检索出来。
2.布尔文本搜索
MySQL支持全文本搜索的另一种形式,称为布尔方式,以布尔方式,可以提供一下细节:
(1)要排斥的词;
(2)要匹配的词;
(3)排列提示(指定某些词比其它词更重要);
(4)表达式分组;
(5)另外一些内容;
select note_text from productnotes where Match(note_text) Against('heavy' IN BOOLEAN MODE);
这个案例检索包含heavy的所有行。
下面,我们再举一个例子,检索包含heavy,但是不以rope开始的词的行
select note_text from productnotes where Match(note_text) Against('heavy -rope*' IN BOOLEAN MODE);
这次只返回一行结果。
3.下面通过几个例子来说明不同的用法:
(1)包含词rabbit和bait的行
select note_text from productnotes where Match(note_text) Against('+rabbit +bait' IN BOOLEAN MODE);
(2)包含rabbit和bait至少一个词的行
select note_text from productnotes where Match(note_text) Against('rabbit bait' IN BOOLEAN MODE);
(3)搜索短语变为rabbit bait,而不是两个词
select note_text from productnotes where Match(note_text) Against('"rabbit bait"' IN BOOLEAN MODE);
(4)匹配rabbit和carrot,增加前者的等级,降低后者的等级
select note_text from productnotes where Match(note_text) Against('>rabbit <carrot' IN BOOLEAN MODE);
(5)匹配搜索词safe和combination,降低后者的等级
select note_text from productnotes where Match(note_text) Against('+safe +(<combination)' IN BOOLEAN MODE);
关于全文本搜索的内容就这么多了。麻烦大家点赞,关注啊。
MySQL学习系列之十三——全文本搜索(1)
MySQL学习系列之十二——组合查询
MySQL学习系列之十一——创建联结
MySQL学习系列之十——联结
MySQL学习系列之九——子查询
MySQL学习系列之八——分组数据
MySQL学习系列之七——用聚集函数汇总数据
MySQL学习系列之六——创建计算字段
MySQL学习系列之五——通配符
MySQL学习系列之四——数据过滤和过滤数据
MySQL学习系列之三——不做限制的查询
MySQL学习系列之二——创建表及对表结构的基本操作
MySQL学习系列之一——MySQL简介
标签: #mysql支持中文全文检索