仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 702|回复: 7
打印 上一主题 下一主题

[学习教程] MYSQL网页设计教你如何在MySQL中进步全文搜刮效力

[复制链接]
海妖 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:18:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
由于MySQL数据库已经如此普及,对企业来说它无疑是一个更好的选择。良多互联网使用程序都供应了全文搜刮功效,用户可使用一个词大概词语片段作为查询项目来定位婚配的纪录。在背景,这些程序利用在一个SELECT查询中的LIKE语句来实行这类查询,只管这类办法可行,但关于全文查找而言,这是一种效力极度低下的办法,特别在处置大批数据的时分。
MySQL针对这一成绩供应了一种基于内建的全文查找体例的办理计划。在此,开辟者只必要复杂地标志出必要全文查找的字段,然后利用特别的MySQL办法在那些字段运转搜刮,这不单单进步了功能和效力(由于MySQL对这些字段做了索引来优化搜刮),并且完成了更高质量的搜刮,由于MySQL利用天然言语来智能地对了局评级,以往失落不相干的项目。
1、设置基础表格
从创立例子表格入手下手,利用以下的SQL命令:
以下为援用的内容:
mysql>CREATETABLEreviews(idINT(5)
PRIMARYKEYNOTNULLAUTO_INCREMENT,dataTEXT);

以上命令创立了一个复杂的音乐专集材料库(次要是整段的笔墨),然后向这个表格中增加一些纪录:
以下为援用的内容:
mysql>INSERTINTO`reviews`(`id`,`data`)VALUES
(1,GingerboyhasanewsingleoutcalledThrowingRocks.Itsgreat!);
mysql>INSERTINTO`reviews`(`id`,`data`)VALUES
(2,Helloall,IreallylikethenewMadonnasingle.
Oneofthehottesttrackscurrently
playing...Ivebeenlisteningtoitallday);
mysql>INSERTINTO`reviews`(`id`,`data`)
VALUES(3,HaveyouheardthenewbandHotterThanHell?
Theyhavefivemembersandthey
burntheirinstrumentswhentheyplayinconcerts.
Theseguystotallyrock!Like,awesome,dude!);

考证数据的准确录进:
以下为援用的内容:
mysql>SELECT*FROMreviews;
+----+--------------------------------------------+
|id|data|
+----+--------------------------------------------+
|1|Gingerboyhasanewsingleoutcalled...|
|2|Helloall,IreallylikethenewMadon...|
|3|HaveyouheardthenewbandHotterThan...|
+----+--------------------------------------------+
3rowsinset(0.00sec)

2、界说全文搜刮字段
接上去,界说您要作为全文搜刮索引的字段:
以下为援用的内容:
mysql>ALTERTABLEreviewsADDFULLTEXTINDEX(data);
QueryOK,3rowsaffected(0.21sec)
Records:3Duplicates:0Warnings:0

利用SHOWINDEXES命令来反省索引已被增加了:
以下为援用的内容:
mysql>SHOWINDEXESFROMreviews;
+---------+---------------+--------+------+------------+---------+
|Table|Column_name|Packed|Null|Index_type|Comment|
----------+---------------+--------+------+------------+---------+
|reviews|id|NULL||BTREE||
|reviews|data|NULL|YES|FULLTEXT||
+---------+---------------+--------+------+------------+---------+
2rowsinset(0.01sec)

3、运转全文搜刮
当您具有了数据和索引,就能够利用MySQL的全文搜刮了,最复杂的全文搜刮体例是带有MATCH...AGAINST语句的SELECT查询,以下是一个复杂的例子,能够来查找含有单词“single”的纪录:
以下为援用的内容:
mysql>SELECTidFROMreviewsWHEREMATCH(data)AGAINST(single);+----+
|id|
+----+
|1|
|2|
+----+
2rowsinset(0.00sec)


在此,MATCH()将作为参数传送给它的字段中的笔墨与传送给AGAINST()的参数举行对照,假如有婚配的,那就依照一般的体例前往。注重您能够传送不止一个字段用MATCH()来检察
小魔女 该用户已被删除
沙发
发表于 2015-1-19 08:18:35 | 只看该作者
大侠们有推荐的书籍和学习方法写下吧。
老尸 该用户已被删除
板凳
发表于 2015-1-25 18:45:15 | 只看该作者
个人感觉没有case直观。而且默认的第三字段(还可能更多)作为groupby字段很容易造成新手的错误。
第二个灵魂 该用户已被删除
地板
发表于 2015-2-3 13:22:54 | 只看该作者
两个月啃那本sqlserver2005技术内部-存储引擎,花了几个月啃四本书
若天明 该用户已被删除
5#
发表于 2015-2-9 03:00:21 | 只看该作者
可以动态传入参数,省却了动态SQL的拼写。
若相依 该用户已被删除
6#
发表于 2015-2-26 19:43:22 | 只看该作者
这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。
变相怪杰 该用户已被删除
7#
发表于 2015-3-8 17:08:53 | 只看该作者
如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。
admin 该用户已被删除
8#
发表于 2015-3-16 07:50:25 | 只看该作者
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-9-21 14:54

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表