文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程MYSQL教你怎样在MySQL中提高全文搜索效率
精品推荐
特别推荐
·MySQL数据库简介
·安全的配置和应用MySQL数据库
·修改MySQL的默认密码
·初学MYSQL应知道:Mysql参数优化
·数据库安全应用 使用MySQL的23个注意事项
·入门:MYSQL基础
·轻松描述Windows上安装多个Mysql的步骤
·安装与卸载MySQL数据库系统服务的常见问题
·Mysql 安全注意事项
·初学MySql5 所应了解的知识和常见问题
·MySQL数据库学习手册之安装MySQL
·无法远程登入MySQL数据库的三种解决办法
·讲解Ubuntu下MySQL数据库安装后初步设置
·MySQL数据库管理员迅速回答常见问题汇总
·详细介绍优化mysql性能的十个参数
·MySQL中执行SQL语句时的两个注意点
·帮助你如何迅速优化你MySQL数据库性能
·PHP+MYSQL建设网站程序需要注意两点
·资深专家手把手教你安装MYSQL数据库
·实战经验:PHP+MySQL数据库论坛简易通
热点TOP10
·怎样从Windows命令行启动MySQL?
·MySQL数据库简介
·怎样测试 MySQL安装是否成功?
·MySQL中执行SQL语句时的两个注意点
·C#连接mysql
·MySQL管理工具SQLyog最新6.1下载
·问题解决:无法载入MYSQL扩展,请检查PHP配置
·SQL中HAVING从句的用法
·修改MYSQL数据库,数据表,字段的编码(解决JSP乱码)
·Sql Server数据库定时自动备份
·MySQL ODBC进行MySQL和SQL Server转换
·Weblogic 9.1的domain配置mysql连接池
·讲解Ubuntu下MySQL数据库安装后初步设置
·安全的配置和应用MySQL数据库
·初学MYSQL应知道:Mysql参数优化
·指导:MySQL数据库导出和导入的方法
·入门:MYSQL基础
·Mysql 安全注意事项
·编制一个Mysql数据库自动备份脚本
·MySQL数据库学习手册之安装MySQL

教你怎样在MySQL中提高全文搜索效率

日期:2007年7月8日 作者: 查看:[大字体 中字体 小字体]


很多互联网应用程序都提供了全文搜索功能,用户可以使用一个词或者词语片断作为查询项目来定位匹配的记录。在后台,这些程序使用在一个SELECT查询中的LIKE语句来执行这种查询,尽管这种方法可行,但对于全文查找而言,这是一种效率极端低下的方法,尤其在处理大量数据的时候。

MySQL针对这一问题提供了一种基于内建的全文查找方式的解决方案。在此,开发者只需要简单地标记出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段运行搜索,这不仅仅提高了性能和效率(因为MySQL对这些字段做了索引来优化搜索),而且实现了更高质量的搜索,因为MySQL使用自然语言来智能地对结果评级,以去掉不相关的项目。

1、设置基本表格

从创建例子表格开始,使用以下的SQL命令:

mysql> CREATE TABLE reviews (id INT(5) 
PRIMARY KEY NOT NULL AUTO_INCREMENT, data TEXT);

以上命令创建了一个简单的音乐专集资料库(主要是整段的文字),然后向这个表格中添加一些记录:

mysql> INSERT INTO `reviews` (`id`, `data`) VALUES

(1, 'Gingerboy has a new single out called Throwing Rocks. It's great!');

mysql> INSERT INTO `reviews` (`id`, `data`) VALUES 

(2, 'Hello all, I really like the new Madonna single. 

One of the hottest tracks currently 

playing...I've been listening to it all day');

mysql> INSERT INTO `reviews` (`id`, `data`)

VALUES (3, 'Have you heard the new band Hotter Than Hell?

They have five members and they 

burn their instruments when they play in concerts. 

These guys totally rock! Like, awesome, dude!');

验证数据的正确录入:

mysql> SELECT * FROM reviews;

+----+--------------------------------------------+

 id  data                                       

+----+--------------------------------------------+

  1  Gingerboy has a new single out called ...  

  2  Hello all, I really like the new Madon ... 

  3  Have you heard the new band Hotter Than... 

+----+--------------------------------------------+

3 rows in set (0.00 sec)

2、定义全文搜索字段

接下来,定义您要作为全文搜索索引的字段:

mysql> ALTER TABLE reviews ADD FULLTEXT INDEX (data);

Query OK, 3 rows affected (0.21 sec)

Records: 3  Duplicates: 0  Warnings: 0

使用SHOW INDEXES命令来检查索引已经被添加了:

mysql> SHOW INDEXES FROM reviews;

+---------+---------------+--------+------+------------+---------+

 Table    Column_name    Packed  Null  Index_type  Comment 

----------+---------------+--------+------+------------+---------+

 reviews   id            NULL          BTREE               

 reviews   data          NULL    YES   FULLTEXT            

+---------+---------------+--------+------+------------+---------+

2 rows in set (0.01 sec)

3、运行全文搜索

当您拥有了数据和索引,就可以使用MySQL的全文搜索了,最简单的全文搜索方式是带有MATCH...AGAINST语句的SELECT查询,以下是一个简单的例子,可以来查找含有单词“single”的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) AGAINST ('single');+----+

 id 

+----+

  1 

  2 

+----+

2 rows in set (0.00 sec)

在此,MATCH()将作为参数传递给它的字段中的文字与传递给AGAINST()的参数进行比较,如果有匹配的,那就按照正常的方式返回。注意您可以传递不止一个字段用MATCH()来查看­-只需用逗号来分割字段列表。

当MySQL收到了一个全文搜索的请求,它就在内部对每个记录进行评分,不匹配的记录得分为零,而“更相关”的记录会得到比“不太相关”的记录相对更高的分数。相关性是由MySQL的一系列区分标准来决定的,查看MySQL的用户手册可以得到更多的信息。

想看到每个记录的评分如何,只需要返回MATCH()方法作为结果集的一部分,如下所示:

mysql> SELECT id, MATCH (data) AGAINST ('rock') FROM reviews;

+----+-------------------------------+

 id  MATCH (data) AGAINST ('rock') 

+----+-------------------------------+

  1                              0 

  2                              0 

  3                1.3862514533815 

+----+-------------------------------+

3 rows in set (0.00 sec)

4、使用逻辑搜索修饰符(Boolean search modifiers)

您还可以使用逻辑搜索修饰符来进行更精确的搜索,这通过在AGAINST语句中添加特殊的IN BOOLEAN MODE修饰符来实现,在以下的例子中,将查找含有单词“single”但是没有“Madonna”的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) 
AGAINST ('+single -madonna' IN BOOLEAN MODE);

+----+

 id 

+----+

  1 

+----+

1 row in set (0.00 sec)

这一搜索特性通常用于搜索单词片断(而不是完整的词语),这可以通过在IN BOOLEAN MODE语句中的*(星号)操作符来实现,以下的例子展示了如何查找单词中含有“hot”的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) 
AGAINST ('hot*' IN BOOLEAN MODE);+----+

 id 

+----+

  3 

  2 

+----+

2 rows in set (0.00 sec)

您还可以使用这种方法来查找至少一个传递到AGAINST的参数中,以下的例子查找了至少包含单词“hell”和“rocks”中的一个的记录:

mysql> SELECT id FROM reviews WHERE MATCH (data) 
AGAINST ('hell rocks' IN BOOLEAN MODE);

+----+

 id 

+----+

  1 

  3 

+----+

2 rows in set (0.00 sec)

以上的这些例子演示了相对于传统的SELECT...LIKE语句,进行全文搜索的更有效的方法,当您下一次需要编写MySQL数据库搜索界面的时候,您可以尝试这一方法。

(出处:清风网络学院






上一篇:六大步保护MySQL数据库中重要数据

下一篇:Linux系统下的Oracle数据库编程详解

教你怎样在MySQL中提高全文搜索效率 相关文章:
·提高运行速度 教你一步一步优化XP系统
·十进制数怎样转成十六进制数?
·男妓是怎样干活的——记者暗访鸭群
·设好eMule电驴两项关键配置 提高下载速度
·怎样清除硬盘及系统垃圾文件?
·怎样永久激活Windows Vista?
·“x365x”“纯爱社区”关键词及搜索引擎作风
·高手教你怎样在网上轻松赚钱
·asp.net(C#)海量数据表高效率分页算法(易懂,不使用存储过程)
·怎样的女孩才是真正的爱你
教你怎样在MySQL中提高全文搜索效率 相关软件:
·兽血沸腾(全文字版)
·效率第一
·红太阳是怎样升起的:延安整风运动的来龙去脉
·各大MP3搜索网站前十名下载曲目
·老板是怎样炼成的
·SQL/MYSQL/数据库教程专栏
·赢得掌声—论提高演说技巧
·『统一网关V0.96 让你的网速提高10倍』强烈推荐
·中国114网搜索系统
·QQ号码定位搜索器(QQ Locater) V1.0d

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.viphot.com
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.viphot.com All Rights Reserved. 鄂ICP备05000083号Powered by:viphot