|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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()来检察 |
|