mysql 全文搜需哦_MySQL 组合查询及全文本搜索

一、组合查询(union)指执行多个查询并将结果作为单个查询结果集返回。

使用union的规则:1.两条或两条以上的select语句;2.每个select语句必须包含相同的列,表达式或聚集函数;3.这些列可以以不同的次序出现;4.列的数据必须兼容。

SELECT vend_id,prod_id,prod_price from products where prod_price<=5

UNION

SELECT vend_id,prod_id,prod_price from products where prod_id in (1001,1002);

UNION 会自动去除掉重复的行。如果使用UNION ALL则不会去除掉重复的行;若需要排序,只需要在最后一条语句加上order by即可。

二、全文本搜索:MySQL最常用的两个引擎,MyISAM和InnoDB,其中MyISAM支持全文本搜索,InnoDB不支持全文本搜索。全文本搜索相对于like和_通配符以及正则匹配有三大优势:性能,明确控制,智能化结果。

全文本语句表达式如下,使用Match()指定被搜索的列,使用Against()指定要使用的搜索表达式。搜索时不区分大小写。

SELECT note_text FROM productnotes WHERE Match(note_text) Against('rabbit');

bf3cf9277d671fc82e3919dfdb86ccce.png

全文本搜索一个重要的部分就是对结果进行排序,具有较高等级的先返回。

SELECT note_text,Match(note_text) Against('rabbit') as rank_1 FROM productnotes;

d28af55632c98d180ac321a833b4db6f.png

三、布尔全文本搜索可以提供关于细节:要匹配的词;要排斥的词;排列提示(指定某些词比其他词更重要);表达式分组等。

操作符如图:

fe87eb0453db6cb5b3dc1758948b970e.png

以下语句匹配包含heavy但不包任意以rope开始的词的行:

SELECT note_text  FROM productnotes where Match(note_text) Against ('heavy -rope' IN BOOLEAN MODE);

全文本搜的说明:

短词(3个或3个一下字符的词)被搜索忽略;

如果一个词出现在50%的行中,则将他作为一个非用词忽略;

对于少于3行的表将不会返回结果;

忽略单词中的单引号(don't变为dont);

仅在MyISAM数据库引擎中支持全文本搜索。

----------------end--------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值