加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

mysql全文模糊搜索MATCH AGAINST方法示范

发布时间:2022-03-09 01:23:21 所属栏目:MySql教程 来源:互联网
导读:mysql 4.x以上提供了全文检索支持 MATCH AGAINST 模式(不区分大小写) 建立全文索引的表的存储引擎类型必须为MyISAM 问题是match against对中文模糊搜索支持不是太好 新建一个utf8 MyISAM类型的表并建立一个全文索引 : CREATE TABLE articles ( id INT U
      mysql 4.x以上提供了全文检索支持 MATCH ……AGAINST 模式(不区分大小写)
 
      建立全文索引的表的存储引擎类型必须为MyISAM
 
      问题是match against对中文模糊搜索支持不是太好
 
      新建一个utf8 MyISAM类型的表并建立一个全文索引 :
 
CREATE TABLE articles (
  id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,
  title VARCHAR(200),
  body TEXT,
  FULLTEXT (title,body)
) ENGINE=MyISAM DEFAULT >
其中FULLTEXT(title, body) 给title和body这两列建立全文索引,之后检索的时候注意必须同时指定这两列。
  mysql全文模糊搜索MATCH AGAINST方法示范
全文检索语法
 
SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple -banana' IN BOOLEAN MODE);
表示AND,即必须包含。- 表示NOT,即不包含。
SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('apple banana' IN BOOLEAN MODE);
apple和banana之间是空格,空格表示OR,即至少包含apple、banana中的一个。
 
SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple banana' IN BOOLEAN MODE);
必须包含apple,但是如果同时也包含banana则会获得更高的权重。
 
SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple ~banana' IN BOOLEAN MODE);
 ~ 是我们熟悉的异或运算符。返回的记录必须包含apple,但是如果同时也包含banana会降低权重。 但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回。
 
SELECT * FROM articles WHERE MATCH (title,body)   AGAINST ('+apple +(>banana <orange)' IN BOOLEAN MODE);
返回同时包含apple和banana或者同时包含apple和orange的记录。但是同时包含apple和banana的记录的权重高于同时包含apple和orange的记录。

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读