关于MySQL的FULLTEXT实现全文检索的注意事项

对于英文,MySQL的FULLTEXT属性来实现全文检索是相当方便且高效的,但是在使用过程中需要注意一些事项。

首先对我们对需要进行检索的字段添加FULLTEXT属性(假设已经建表):

SQL:

alter table table_name add fulltext index(filed_1,filed_2);

接下来查询数据:

SQL:

 SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST (‘keyword‘);

此处涉及到一个很重要的注意事项:

MySQL规定全文搜索中被搜索的单词所在的行数大于等于被搜索的所有行数的一半时候,就将被搜索单词作为Common word,即不被显示。(具体条件需要查阅资料确定)

因此,假设在测试的时候,表中只有一行数据,所以无论怎么执行上述查询语句,返回的结果总是为空。不必惊慌,多加几条没有待查关键词的数据就会有结果啦~

当然,MySQL提供了更加强大的查询结果过滤:

SQL:

SELECT * FROM table_name WHERE MATCH (filed_1,filed_2) AGAINST (‘+keyword_1 -keyword_2‘ IN BOOLEAN MODE);

这样,就会返回包含keyword_1的数据,而包含keyword_2的数据就会被过滤掉。



????????原文地址:http://www.luoning.me/mysql-fulltext.html

时间: 2024-08-06 21:41:56

关于MySQL的FULLTEXT实现全文检索的注意事项的相关文章

MYSQL安装不上,以及注意事项

程序:MYSQL 6.0 64位 操作系统:WIN2008 64位 第一次安装老是失败,WIN7还是WIN2008都一样. 首先是关于删除MYSQL: 先在服务(开始-->控制面板-->管理工具-->服务)里停掉MySQL的服务.打开控制面板-添加删除程序,找到MySQL,卸载.或者用360安全卫士来卸载也行.也可以用mysql的那个安装程序删除 把安装好的MYSQL卸载了,但这对于卸载MySQL来说这只是一半,还有重要的另一半是要清理注册表.我们要进入注册表在开始-运行里面输入rege

MySQL 8中使用全文检索示例

首先建议张册测试用的表test,并使用fulltext说明将title和body两列的数据加入全文检索的索引列中: drop table if exists test; create table test ( id integer not null primary key auto_increment, title varchar(50), body longtext, fulltext(title, body) with parser ngram ); 然后往其中插入数据: insert in

MySQL全文索引 FULLTEXT索引和like的区别

1.概要 InnoDB引擎对FULLTEXT索引的支持是MySQL5.6新引入的特性,之前只有MyISAM引擎支持FULLTEXT索引.对于FULLTEXT索引的内容可以使用MATCH()-AGAINST语法进行查询. 为了在InnoDB驱动的表中使用FULLTEXT索引MySQL5.6引入了一些新的配置选项和INFORMATION_SCHEMA表.比如,为了监视一个FULLTEXT索引中文本处理过程的某一方面可以查询INNODB_FT_CONFIG,INNODB_FT_INDEX_TABLE,

MySQL中 enum 插入的时候注意事项

今天在执行开发发过来的工单的时候,source批量导入执行时候发现报了很多警告 提示 truncate for column xxxxx .导入完成后,使用select查询后,发现大量数据未成功插入. 后来发现是enum字段没有加引号搞的鬼. 结论:    enum的字段,在插入的时候,必须带上引号.否则会出现不可预期的问题. 验证过程如下: [none] > use test; [test] > create table t1( a int primary key auto_incremen

Mysql的建表规范与注意事项

一. 表设计规范 库名.表名.字段名必须使用小写字母,“_”分割. 库名.表名.字段名必须不超过12个字符. 库名.表名.字段名见名知意,建议使用名词而不是动词. 建议使用InnoDB存储引擎. 存储精确浮点数必须使用DECIMAL替代FLOAT和DOUBLE. 建议使用UNSIGNED存储非负数值. 建议使用INT UNSIGNED存储IPV4. 整形定义中不添加长度,比如使用INT,而不是INT(4). 使用短数据类型,比如取值范围为0-80时,使用TINYINT UNSIGNED. 不建议

MySQL主备停机步骤与注意事项

双十一马上到了,一堆的事情,今天登录mysql数据库服务器的时候突然发现服务器时间戳不对,比北京时间快了几分钟,我的天...随后检查了其他的几台数据库服务器发现同样都存在不同的偏差,最小的比北京时间快几秒,最大的长达8分钟,感觉整个人都不舒服了...服务器时间戳没有同步会导致什么问题呢,举个最简单的例子你的程序代码里面用now()来获取时间,比如一个订单,你最终会发现订单的处理时间竟然比订单的创建时间来到早,马爸爸和东哥要是知道了还不得发飙啊!!! 随后要做的事情就是改服务器时间了,改服务器时间

pd导出sql和mysql客户端导入sql文件时注意事项

1.使用PowerDesigner导出sql文件时(附导出步骤): (1)首先切换数据库,如下图,以MySQL为例: (2)开始生成sql,如下图所示,保存为sql文件: (3)此时发现导出的sql没有注释,这时按下图方法进行添加comment列: (4)然后再按前两个步骤导出即可,至此,导出问题解决: 2.使用MySQL客户端导入sql文件时: (1)因为用pd默认保存的文件编码格式为ANSI,再这种格式下导入sql后发现注释没有导入成功: (2)很自然的反应时修改编码,这时用记事本打开另存为

MySQL生产库主从重新同步操作注意事项

从库还原前一定要记得reset,因为重启mysql并不影响复制进程,如果忘记reset,会导致你一边恢复,主库有动作也一边往从库写,这时候你再change master ACID也就无法保证. reset slave all; 清除主从信息后,可以开始用主库的全备进行从库的恢复 [[email protected] ~]# mysql -uroot -p < /databackup/fullbackup/20160403.sql 查看主库备份集中的binlog和position偏移量 [[ema

MySQL使用AUTO_INCREMENT列的表注意事项之delete数据篇

1. 说明 在对带有AUTO_INCREMENT列的表delete掉所有数据时: (1)对于MyISAM表,在delete表中所有数据时没有任何风险,随意折腾: (2)对于InnoDB表,在delete表中所有数据时,是可能有风险的,可能会引入一个大坑,具体看后面的实验. 环境描述:RHEL 6.4 x86_64 + MySQL 5.6.19 blog地址:http://blog.csdn.net/hw_libo/article/details/40149173 在维护有AUTO_INCREME