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

给这个表添加点测试数据

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 ...');

全文检索测试

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

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

mysql+int+类型如何模糊搜索_mysql全文模糊搜索MATCH AGAINST方法示例相关推荐

  1. mysql用于检索的关键字_Mysql全文搜索match...against的用法

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

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

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

  3. MySQL int 类型长度有啥用? int(11) 和 int(20) 有啥区别?

    MySQL int 类型长度有啥用? 数值类型设置的长度并不影响该数值字段的取值范围 所以正常来说没什么用. 其长度只有在设置 ZEROFILL 即 "填充零" 后才有所意义. 比 ...

  4. mysql int 最大显示宽度_mysql int 整数类型 解释显示宽度 和 存储宽度

    存储宽度 是实际存储记录宽度 存储宽度默认是写死的,就算修改宽度也改变不了,改变的是显示宽度 ============有符号和无符号int============= 创建一个 无符号的 int 整数类 ...

  5. php mysql int 日期格式化 string,MYSQL int类型字段的时间存放和显示 和 php的时间存放函数...

    mysql: ====================== int类型字段的时间存放 UPDATE tablename SET add_time = UNIX_TIMESTAMP(NOW()) int ...

  6. mysql int类型的长度值

    整数类型的存储和范围(来自mysql手册) 类型 字节 最小值 最大值 (带符号的/无符号的) (带符号的/无符号的) TINYINT 1 -128 127 0 255 SMALLINT 2 -327 ...

  7. mysql字段类型详解_MySQL字段类型详解

    MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数.许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段 ...

  8. mysql int类型为null_MySQL INT类型可以为非零NULL吗?

    您可以将INT列的值设置为NULL.INT列键入可为空的列.语法如下:INSERT INTO yourTableName(yourIntColumnName) values(NULL); 为了理解上述 ...

  9. insert mysql int类型_注意在insert插入数据库时的int类型问题

    标签: 比如,一个语句,insert into mbProduct(p_UserID,p_BigID,p_qq)values("+getUserid+",'"+getdr ...

  10. mysql decimal类型最大长度_mysql decimal类型与decimal长度用法详解

    三者的区别介绍 float:浮点型,含字节数为4,32bit,数值范围为-3.4E38~3.4E38(7个有效位) double:双精度实型,含字节数为8,64bit数值范围-1.7E308~1.7E ...

最新文章

  1. 数据恢复:解决ORA-600[kghstack_free2][kghstack_err+0068]一例
  2. Linux network source code
  3. .NET仓储模式高级用例
  4. QT中的QButtonGroup
  5. ★深入探讨高维宇宙【二】
  6. PCL1.8.0/ Qt5.7.0开发环境配置
  7. mysql 默认时间_mysql中如何设置默认时间为当前时间?
  8. 求x的n次方编程_C++编程X的N次方程序
  9. Operator基础:1: Operator Framework简介
  10. python笔记(web前端 CSS)
  11. Camera 之水波纹和banding现象
  12. LinkNet 笔记
  13. ArcGIS 地理数据库(GDB)/Tolerance/Resolution简介
  14. CISP含金量如何?
  15. MATLAB基本使用方法
  16. poj1008 -- 玛雅历
  17. errcode.php,errCode.php
  18. 数据库安全防护几点介绍
  19. 华为IPv4静态路由与NQA联动
  20. Win/ubu双系统问题解决笔记

热门文章

  1. java_十进制数转换为二进制,八进制,十六进制数的算法
  2. 磁盘类型 GetDriveType
  3. 基于AISAS模式的用户分析研究
  4. Gson日期格式异常-com.google.gson.JsonSyntaxException
  5. C# ocr识别(Tesseract库)
  6. PHP 数字缩短(最多1倍)与还原
  7. html 复选框全选、反选操作
  8. 管理感悟:一个人的工作效率是不可能提高的
  9. 使用jps查看JAVA进程号
  10. 员工说不用兼容老文件,当主管的就信了?