原文链接:http://www.cnblogs.com/robertsun/p/5999588.html

对于一些简单的检索可以通过mysql自带的全文索引及 MATCH AGAINST 查询语句实现。实验步骤如下。
1、建表
DROP table IF exists con_video_file_des_test;
CREATE TABLE `con_video_file_des_test` (
`content_id`  bigint(20) NOT NULL AUTO_INCREMENT COMMENT '视频ID' ,
`video_title`  varchar(60) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '视频标题' ,
`video_title_phonetic`  text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '视频标题拼音' ,
`video_title_en`  varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '视频标题英文' ,
PRIMARY KEY (`content_id`)
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8 COLLATE=utf8_general_ci
COMMENT='con_视频类文件描述信息'
AUTO_INCREMENT=7
ROW_FORMAT=COMPACT;
2、插入测试数据
INSERT INTO `test`.`con_video_file_des_test` (`content_id`, `video_title`, `video_title_phonetic`, `video_title_en`) VALUES ('1', '建国大业', 'jian guo da ye', 'blockbuster Founding of the Republic');
INSERT INTO `test`.`con_video_file_des_test` (`content_id`, `video_title`, `video_title_phonetic`, `video_title_en`) VALUES ('2', '坚果游记', 'jian guo you ji', 'jian guo travel');
3、索引如下
alter table con_video_file_des_test add fulltext search_index(video_title,video_title_phonetic,video_title_en);
4、查询测试
a: select * from con_video_file_des_test where match(video_title,video_title_phonetic,video_title_en) against('建国');
b: select * from con_video_file_des_test where match(video_title,video_title_phonetic,video_title_en) against('建国大业');
c: select * from con_video_file_des_test where match(video_title,video_title_phonetic,video_title_en) against('jian guo');
d: select * from con_video_file_des_test where match(video_title,video_title_phonetic,video_title_en) against('jian guo da ye');
a查询无数据;b查询返回第一条记录,c,d查询都返回两条记录,并第一条记录为坚果游记。
解释如下因为mysql是以空格分割进行分词建立索引的,所以a查询没有查到数据,b查询能查到数据;c,d查询均查询到语句第一条记录为坚果游记是因为MATCH...AGAINST是以相关性排序,由高到低;
其他注意事项:
1、预设搜寻是不分大小写,若要分大小写,columne 的 character set要从utf8改成utf8_bin。
2、预设 MATCH...AGAINST 是以相关性排序,由高到低。
3、MATCH(title, content)里的字段必须和FULLTEXT(title, content)里的字段一模一样。否则提示 Can't find FULLTEXT index matching the column list。
4、ft_min_word_len = 全文检索的最小许可字符(默认4,通过 SHOW VARIABLES LIKE 'ft_min_word_len' 可查看),中文通常是两个字就是一个词。
5、检索方式有自然语言检索(IN NATURAL LANGUAGE MODE)和布尔检索(IN BOOLEAN MODE)两种,两种检索就不深入研究了。
6、由于不能对中文进行单个字词的检索,一解决方法是添加拼音列,存储中文转成的拼音,将输入的中文转为拼音进行检索并返回结果,但这样会出现输入“建国”找到了两条记录“建国大业”、“坚果游记”。
mysql的全文检索可以应对一些简单的应用需求,对于一些要求更高的应用可以通过其他全文检索方式实现,比如Lucene、Nutch、solr等。

mysql全文索引浅谈的更多相关文章

  1. MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等

    MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...

  2. MySQL之浅谈MySQL的存储引擎

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合.     我们通常说的MySql数据库,sql server数据库等 ...

  3. 【MySQL】MySQL之浅谈MySQL的存储引擎

    什么是MySql数据库 通常意义上,数据库也就是数据的集合,具体到计算机上数据库可以是存储器上一些文件的集合或者一些内存数据的集合.     我们通常说的MySql数据库,sql server数据库等 ...

  4. 【MySQL】浅谈 varchar(N)

    一  前言  varchar(N) N代表什么意思,能存放多少个中文字符?属于老生常谈的问题了,今天又被一个开发同事问我关于这个问题,索性写一篇文章来具体介绍一下.二 理论知识 先说明一下 MySQL ...

  5. mysql之浅谈主外键

    主键(PRIMARY KEY) 主键在一个数据表中只能有唯一的一个,约束当前字段的值不能重复,且非空保证数据的完整性,也可以当做当前数据表的标识符用来查询(当做索引,唯一性索引的一种) 创建带主键的表 ...

  6. Linux CentOS下MySQL的安装配置之浅谈

    前期必备安装:VMware虚拟机,CentOS镜像[注意:Linux下使用CentOS   MySQL是不用在官网下载的,只需要配置就OK了] 下面开始正式操作: //CentOS安装MySQL之浅谈 ...

  7. 浅谈MySQL存储引擎-InnoDB&MyISAM

    存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见 ...

  8. MySql主从配置实践及其优势浅谈

    MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...

  9. 浅谈mysql主从复制的高可用解决方案

    1.熟悉几个组件(部分摘自网络)1.1.drbd     —— DRBD(Distributed Replicated Block Device),DRBD号称是 "网络 RAID" ...

随机推荐

  1. 免费获取 Jetbrain 全家桶使用兑换码的正确姿势!

    自今年1月份以Jetbrain公司严厉打击旗下开发工具产品(如:IntelliJ IDEA.WebStorm.PyCharm等)的盗版破解以来.求新破解方式.分享新破解方法的帖子或信息经常可以在各技术 ...

  2. 使用EPX Studio 7.0 下载网站验证码

    implementation var Document_: DispHTMLDocument; //用于处理网页文档对象 EPX: IExcelPanelXDisp; procedure TForm1 ...

  3. 强连通分量SCC 2-SAT

    强连通分量SCC 2-SAT 部分资料来自: 1.https://blog.csdn.net/whereisherofrom/article/details/79417926 2.https://ba ...

  4. Linux下MySQL主主同步

    主主复制:主从相互授权连接,读取对方binlog日志并更新到本地数据库的过程:只要对方数据改变,自己就跟着改变. 本节介绍主主复制模式的配置. 前提条件 已安装MySQL两台服务器.服务器规划示例如表 ...

  5. hdu3294 Manacher算法模板

    题目链接:http://icpc.njust.edu.cn/Problem/Hdu/3294/ 回文长度如果是mxx,回文中心是id的话,在扩展串中(id-mxx+1,id+mxx-1)的这段中去除标 ...

  6. 大多数人不知道的表格其他写法的onmouseover效果

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http ...

  7. O3优化模板

    #pragma GCC optimize(2) #pragma GCC optimize(3) #pragma GCC optimize("Ofast") #pragma GCC ...

  8. leetcode之820. 单词的压缩编码 | python极简实现字典树

    题目 给定一个单词列表,我们将这个列表编码成一个索引字符串 S 与一个索引列表 A. 例如,如果这个列表是 ["time", "me", "bell& ...

  9. Building Applications with Force.com and VisualForce (DEV401) (二三):Visualforce Componets (Tags) Library Part III

    Dev401-024:Visualforce Pages: Visualforce Componets (Tags) Library Part IIIStatic Resources1.Static ...

  10. 10行Python代码实现目标检测

    要知道图像中的目标是什么? 或者你想数一幅图里有多少个苹果? 在本文中,我将向你展示如何使用Python在不到10行代码中创建自己的目标检测程序. 如果尚未安装python库,你需要安装以下pytho ...