海妖 发表于 2015-1-16 22:18:49

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

由于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技术内部-存储引擎,花了几个月啃四本书

若天明 发表于 2015-2-9 03:00:21

可以动态传入参数,省却了动态SQL的拼写。

若相依 发表于 2015-2-26 19:43:22

这一点很好的加强了profiler的功能。但是提到profiler提醒大家注意一点。windows2003要安装sp1补丁才能启动profiler。否则点击没有反应。

变相怪杰 发表于 2015-3-8 17:08:53

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

admin 发表于 2015-3-16 07:50:25

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!
页: [1]
查看完整版本: MYSQL网页设计教你如何在MySQL中进步全文搜刮效力