IT技术互动交流平台

关于MATCH AGAINST模糊搜索的详细操作教程

作者:whl  来源:网络整理  发布日期:2018-11-16 08:33:00

  相信很多电脑用户对于mysql并不是很熟悉,有些操作都不知道该如何进行。今天将给大家讲解一下关于MATCH AGAINST模糊搜索的详细操作教程,小编个人认为这个教程还是非常具有学习价值的,很多时候有了这个方法操作起来省力很多。

  mysql 4.x以上提供了全文检索支持 MATCH ……AGAINST 模式(不区分大小写)

  建立全文索引的表的存储引擎类型必须为MyISAM

  问题是match against对中文模糊搜索支持不是太好

  新建一个utf8 MyISAM类型的表并建立一个全文索引 :

全文索引

  其中FULLTEXT(title, body) 给title和body这两列建立全文索引,之后检索的时候注意必须同时指定这两列。

  给这个表添加点测试数据

添加点测试数据

  全文检索测试

全文检索测试

  注意 MATCH (title,body) 里面的值必须是前面建立全文索引的两个字段不能少。

  mysql 默认支持全文检索的字符长度是4,可以用SHOW VARIABLES LIKE 'ft_min_word_len' 来查看指定的字符长度,也可以在mysql配置文件my.ini 更改最小字符长度,方法是在my.ini 增加一行 比如:ft_min_word_len = 2,改完后重启mysql即可。

  另外,MySQL还会计算一个词的权值,以决定是否出现在结果集中,具体如下:

  mysql在集和查询中的对每个合适的词都会先计算它们的权重,一个出现在多个文档中的词将有较低的权重(可能甚至有一个零权重),因为在这个特定的集中,它有较低的语义值。否则,如果词是较少的,它将得到一个较高的权重,mysql默认的阀值是50%,上面‘you'在每个文档都出现,因此是100%,只有低于50%的才会出现在结果集中。

  全文检索语法

全文检索语法  

  表示AND,即必须包含。- 表示NOT,即不包含。

 表示AND

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

  包含apple、banana

  必须包含apple,但是如果同时也包含banana则会获得更高的权重。

获得更高的权重

  ~ 是我们熟悉的异或运算符。返回的记录必须包含apple,但是如果同时也包含banana会降低权重。 但是它没有 +apple -banana 严格,因为后者如果包含banana压根就不返回。

包含banana压根就不返回

  返回同时包含apple和banana或者同时包含apple和orange的记录。但是同时包含apple和banana的记录的权重高于同时包含apple和orange的记录。

  关于mysql里MATCH AGAINST的模糊搜索今天就给大家介绍到这里了,小编感觉还是非常简单易操作的,大家不要担心因为太难操作会失败而不敢下手。如果大家对上面的内容还有什么疑惑的话可以给小编留言,大家一起交流解决。

 

延伸阅读:

Tag标签: MATCH AGAINST   模糊搜索  
  • 专题推荐

About IT165 - 广告服务 - 隐私声明 - 版权申明 - 免责条款 - 网站地图 - 网友投稿 - 联系方式
本站内容来自于互联网,仅供用于网络技术学习,学习中请遵循相关法律法规