您好,登錄后才能下訂單哦!
本篇內容主要講解“如何在MySQL中提高全文搜索效率”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何在MySQL中提高全文搜索效率”吧!
很多互聯網應用程序都提供了全文搜索功能,用戶可以使用一個詞或者詞語片斷作為查詢項目來定位匹配的記錄。在后臺,這些程序使用在一個SELECT查詢中的LIKE語句來執行這種查詢,盡管這種方法可行,但對于全文查找而言,這是一種效率極端低下的方法,尤其在處理大量數據的時候。
MySQL針對這一問題提供了一種基于內建的全文查找方式的解決方案。在此,開發者只需要簡單地標記出需要全文查找的字段,然后使用特殊的MySQL方法在那些字段運行搜索,這不僅僅提高了性能和效率(因為MySQL對這些字段做了索引來優化搜索),而且實現了更高質量的搜索,因為MySQL使用自然語言來智能地對結果評級,以去掉不相關的項目。
怎樣在MySQL中提高全文搜索效率
1、設置基本表格
從創建例子表格開始,使用以下的SQL命令:
mysql>CREATETABLEreviews(idINT(5)
以上命令創建了一個簡單的音樂專集資料庫(主要是整段的文字),然后向這個表格中添加一些記錄:
mysql>INSERTINTO`reviews`(`id`,`data`)VALUES
驗證數據的正確錄入:
mysql>SELECT*FROMreviews;
2、定義全文搜索字段
接下來,定義您要作為全文搜索索引的字段:
mysql>ALTERTABLEreviewsADDFULLTEXTINDEX(data);
使用SHOWINDEXES命令來檢查索引已經被添加了:
mysql>SHOWINDEXESFROMreviews;
| 2|
+----+
2rowsinset(0.00sec)
在此,MATCH()將作為參數傳遞給它的字段中的文字與傳遞給AGAINST()的參數進行比較,如果有匹配的,那就按照正常的方式返回。注意您可以傳遞不止一個字段用MATCH()來查看--只需用逗號來分割字段列表。
當MySQL收到了一個全文搜索的請求,它就在內部對每個記錄進行評分,不匹配的記錄得分為零,而“更相關”的記錄會得到比“不太相關”的記錄相對更高的分數。相關性是由MySQL的一系列區分標準來決定的,查看MySQL的用戶手冊可以得到更多的信息。
想看到每個記錄的評分如何,只需要返回MATCH()方法作為結果集的一部分,如下所示:
mysql>SELECTid,MATCH(data)AGAINST('rock')FROMreviews;
關于在MySQL中提高全文搜索效率的方法就為大家介紹到這里,相信通過上文的學習,大家現在對在MySQL中提高全文搜索效率有所了解,希望大家都能夠熟練掌握,然后將其應用于以后的工作中,相信會給大家的工作帶來很多的便利。
+----+-------------------------------+|id|MATCH(data)AGAINST('rock')|+----+-------------------------------+| 1|0|| 2|0|| 3| 1.3862514533815|+----+-------------------------------+3rowsinset(0.00sec)
+---------+---------------+--------+------+------------+---------+|Table |Column_name |Packed|Null|Index_type|Comment|----------+---------------+--------+------+------------+---------+|reviews| id |NULL | |BTREE |||reviews| data|NULL |YES |FULLTEXT ||+---------+---------------+--------+------+------------+---------+2rowsinset(0.01sec)
QueryOK,3rowsaffected(0.21sec)Records:3 Duplicates:0 Warnings:0
+----+--------------------------------------------+|id|data |+----+--------------------------------------------+| 1|Gingerboyhasanewsingleoutcalled... || 2|Helloall,IreallylikethenewMadon...|| 3|HaveyouheardthenewbandHotterThan...|+----+--------------------------------------------+3rowsinset(0.00sec)
(1,'GingerboyhasanewsingleoutcalledThrowingRocks.It'sgreat!');mysql>INSERTINTO`reviews`(`id`,`data`)VALUES(2,'Helloall,IreallylikethenewMadonnasingle.Oneofthehottesttrackscurrentlyplaying...I'vebeenlisteningtoitallday');mysql>INSERTINTO`reviews`(`id`,`data`)VALUES(3,'HaveyouheardthenewbandHotterThanHellTheyhavefivemembersandtheyburntheirinstrumentswhentheyplayinconcerts.Theseguystotallyrock!Like,awesome,dude!');
PRIMARYKEYNOTNULLAUTO_INCREMENT,dataTEXT);
到此,相信大家對“如何在MySQL中提高全文搜索效率”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。