mysql全文索引的搜索模式_mysql全文索引fulltext index

1.简述

通过建立mysql的全文索引进行全文搜索的功能。全文搜索可以同时搜索多个列中的多个关键字的记录结果。

虽然like语句也能达到同样的效果,但使用全文索引效率更高,代码更简洁。

在MySQL5.6.24以后的版本中InnoDB和MyISAM引擎搜支持全文搜索,比MySQL5.6.24低的版本只有MyISAM引擎支持全文搜索。

mysql默认不支持中文词的搜索。

mysql建立全文搜索的字段类型必须是char、varchar和text。2.建立和删除全文索引#建表的时候添加全文索引

CREATE TABLE news (

id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,

title VARCHAR(200),

content TEXT,

FULLTEXT(title,content)

)TYPE=MYISAM;#在已建好的表上添加全文索引

ALTER TABLE `news` ADD FULLTEXT(title);#单个字段

ALTER TABLE `news` ADD FULLTEXT(title,content);#多个字段#索引的删除

ALTER TABLE `news` DROP INDEX title;#查看表的所有索引

SHOW INDEX FROM `news`;3.sql查询语句#单字段搜索

SELECT * FROM `news` WHERE MATCH(`字段`) AGAINST('关键词');

#多字段搜索

SELECT * FROM `news` WHERE MATCH(`字段`,`字段2`) AGAINST('关键词1 关键词2');4.检索方式

4.1、自然语言检索: IN NATURAL LANGUAGE MODE

4.2、布尔检索: IN BOOLEAN MODE

剔除一半匹配行以上都有的词,譬如说,每个行都有this这个字的话,那用this去查时,会找不到任何结果,这在记录条数特别多时很有用,

原因是数据库认为把所有行都找出来是没有意义的,这时,this几乎被当作是stopword(中断词);但是若只有两行记录时,是啥鬼也查不出来的,

因为每个字都出现50%(或以上),要避免这种状况,请用IN BOOLEAN MODE。

● IN BOOLEAN MODE的特色:

·不剔除50%以上符合的row。

·不自动以相关性反向排序。

·可以对没有FULLTEXT index的字段进行搜寻,但会非常慢。

·限制最长与最短的字符串。

·套用Stopwords。

● 搜索语法规则:

+   一定要有(不含有该关键词的数据条均被忽略)。

-   不可以有(排除指定关键词,含有该关键词的均被忽略)。

>   提高该条匹配数据的权重值。

~   将其相关性由正转负,表示拥有该字会降低相关性(但不像 - 将之排除),只是排在较后面权重值降低。

*   万用字,不像其他语法放在前面,这个要接在字符串后面。

" " 用双引号将一段句子包起来表示要完全相符,不可拆字。

SELECT * FROM news WHERE MATCH (title,content) AGAINST ('+apple -banana' IN BOOLEAN MODE);

+ 表示AND,即必须包含。- 表示NOT,即必须不包含。即:返回记录必需包含 apple,且不能包含 banner。

SELECT * FROM news WHERE MATCH (title,content) AGAINST ('apple banana' IN BOOLEAN MODE);

apple和banana之间是空格,空格表示OR。即:返回记录至少包含apple、banana中的一个。

SELECT * FROM news WHERE MATCH (title,content) AGAINST ('+apple banana' IN BOOLEAN MODE);

返回记录必须包含apple,同时banana可包含也可不包含,若包含的话会获得更高的权重。

SELECT * FROM news WHERE MATCH (title,content) AGAINST ('+apple ~banana' IN BOOLEAN MODE);

~ 是我们熟悉的异或运算符。返回记录必须包含apple,若也包含了banana会降低权重。

但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回。

SELECT * FROM news WHERE MATCH (title,content) AGAINST ('+apple +(>banana

返回必须同时包含“apple banana”或者必须同时包含“apple orange”的记录。

若同时包含“apple banana”和“apple orange”的记录,则“apple banana”的权重高于“apple orange”的权重。

4.3、查询扩展检索: WITH QUERY EXPANSION

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值