ySQL 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这两列建立全文索引,之后检索的时候注意必须同时指定这两列。

给这个表添加点测试数据

INSERT INTO articles (title,body) VALUES

('MySQL Tutorial','DBMS stands for DataBase ...'),

('How To Use MySQL Well','After you went through a ...'),

('Optimizing MySQL','In this tutorial we will show ...'),

('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),

('MySQL vs. YourSQL','In the following database comparison ...'),

('MySQL Security','When configured properly, MySQL ...');

3. 全文检索测试

SELECT * FROM articles   WHERE MATCH (title,body) AGAINST ('database');

注意 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%的才会出现在结果集中。

全文检索语法

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

全文:http://www.lao8.org/article_1602/MATCH_AGAINST_mysql

mysql match against_mysql全文模糊搜索MATCH AGAINST方法相关推荐

  1. mysql against_mysql全文模糊搜索MATCH AGAINST方法示例

    mysql 4.x以上提供了全文检索支持 MATCH --AGAINST 模式(不区分大小写) 建立全文索引的表的存储引擎类型必须为MyISAM 问题是match against对中文模糊搜索支持不是 ...

  2. mysql全文搜索数字against_Mysql全文搜索match…against的用法

    前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索.假定数据表名为post,有三列:id.title.content.id是自增长序号,title是varchar,content是te ...

  3. mysql against_Mysql 全文搜索 Match Against用法

    全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于 MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREATE ...

  4. mysql函数match_Mysql全文搜索match…against的用法 | 学步园

    全文检索在 MySQL 中就是一个 FULLTEXT 类型索引.FULLTEXT 索引用于   MyISAM 表,可以在 CREATE TABLE 时或之后使用 ALTER TABLE 或 CREAT ...

  5. 【转】 Mysql全文搜索match...against的用法

    原文链接 http://blog.csdn.net/manbujingxin/article/details/6656992 前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索. 假定 ...

  6. mysql scws_php利用scws实现mysql全文搜索功能的方法,_PHP教程

    php利用scws实现mysql全文搜索功能的方法, 本文实例讲述了php利用scws实现mysql全文搜索功能的方法.分享给大家供大家参考.具体方法如下: scws这样的中文分词插件比较不错,简单的 ...

  7. mysql scws_php利用scws实现mysql全文搜索功能的方法

    本文实例讲述了php利用scws实现mysql全文搜索功能的方法.分享给大家供大家参考.具体方法如下: scws这样的中文分词插件比较不错,简单的学习了一下,它包涵一些专有名称.人名.地名.数字年代等 ...

  8. 关于Java中Match类的appendReplacement()方法的一个坑{ character to be escaped }

    关于Java中Match类的appendReplacement()方法的一个坑{java.lang.IllegalArgumentException: character to be escaped ...

  9. php模糊搜索慢怎么办,MySQL中文模糊检索问题的解决方法_php

    mysql中文模糊检索问题的解决方法 来源:林兴陆 在 MySQL 下,在进行中文模糊检索时,经常会返回一些与之不相关的 记录,如查找 "-0x1.ebea4bfbffaacp-4%&quo ...

最新文章

  1. 从零开始玩转logback
  2. 工具介绍:SUN CAM阵列管理客户端
  3. 理解request.getSession(boolean create)
  4. matlab 里try用法,matlab在整个程序(全局)中使用try-catch来报告错误
  5. 计算abc=a!+b!+c!
  6. 修改git历史提交的commit信息
  7. 苹果发布 macOS 12——Monterey
  8. silverlight中DataGrid错误:data未定义
  9. vue element form 自定义校验1(字段校验)
  10. 如何使用Aimersoft Video Suite Mac将 DVD 刻录到 ISO/DVD 文件夹
  11. 什么是Http无状态协议?
  12. win10u盘被写保护怎么解除_win10系统下u盘被写保护怎么解除_win10解除u盘写保护方法...
  13. mysql离散查询_MySQL多表查询与子查询
  14. 行走在网格之间:微博用户关系模型
  15. Scrapy框架采集微信公众号数据,Python大佬机智操作绕过反爬验证码
  16. 高斯判别算法GDA(吴恩达机器学习c#实践,高斯模板上同心椭圆马氏距离画法,三)
  17. UDS诊断看这篇就够了,吐血整理
  18. 使用CLB部署HTTPS业务
  19. 基于Cesium的卫星及空间碎片的轨迹展示
  20. Linux应用开发【第十五章】存储设备应用开发

热门文章

  1. CentOS7vim修改文件/bin/bash: wq command not found问题解决
  2. Java编程基础-方法
  3. discuz的htm模板代码分析
  4. 沙特能效2902标签、证书办理,SASO2902流程
  5. Linux启动一个服务后,服务的某个文件所在的目录下出现类似:systemd-private.xxxxxx的目录...
  6. 中国地图 echarts china.js 无乱码
  7. 如何用matlab将彩色图片转为单通道绿色图片
  8. Linux常见命令:与系统管理有关的命令(转)
  9. java的tey语句return了_java中try-catch-finally中的return语句
  10. 数字图像处理必备软件