主頁 > 知識庫 > MySQL 全文索引的原理與缺陷

MySQL 全文索引的原理與缺陷

熱門標簽:北京人工外呼系統(tǒng)價錢 福州呼叫中心外呼系統(tǒng)哪家好 天智外呼系統(tǒng) 地圖標注被騙三百怎么辦 400電話鄭州申請 常州電銷外呼系統(tǒng)一般多少錢 沃克斯電梯外呼線路圖 云南語音外呼系統(tǒng)平臺 房產(chǎn)智能外呼系統(tǒng)品牌

MySQL全文索引一種特殊的索引,它會把某個數(shù)據(jù)表的某個數(shù)據(jù)列出現(xiàn)過的所有單詞生成一份清單。

alter table tablename add fulltext(column1,column2)

說明:

只能在MyISAM數(shù)據(jù)表中創(chuàng)建

全文索引是以空格或標點隔開才能搜到的,搜中文是搜不到(有專門的應(yīng)用支持中文分詞可以搜中文,但都不理想)

少于3個字符的單詞不會被包含在全文索引里,可以通過修改my.cnf修改選項

ft_min_word_len=3

重新啟動MySQL服務(wù)器,用repair table tablename quick 為有關(guān)數(shù)據(jù)表重新生成全文索引

select * from tablename where match(column1,column2) against('word1 word2 word3')>0.001

match ... against 把column1,column2數(shù)據(jù)列中至少包含word1,word2,word3三個單詞之一的數(shù)據(jù)記錄查找到,在關(guān)鍵字match后的數(shù)據(jù)列必須 跟創(chuàng)建全文索引的數(shù)據(jù)列相同,檢索詞不區(qū)分大小寫和先后順序,少于3個字符的單詞通常被忽略。match... against ...表達式返回一個浮點數(shù)作為它本身的求值結(jié)果,這個數(shù)字反映了結(jié)果記錄與被檢索單詞的匹配程度。如果沒有匹配到任何記錄,或者匹配到的結(jié)果記錄太多反 而被忽略,表達式將返回0,表達式>0.001的作用是排除match的返回值太小的結(jié)果記錄。

select *,match(column1,column2) against ('word1 word2 word3') as mtch
from tablename
having mtch>0.01
order by mtch desc
limit 5

找出最匹配的5條記錄,在where字句中不能使用假名,所以用having

布爾全文搜索的性能支持以下操作符:

+word:一個前導的加號表示該單詞必須 出現(xiàn)在返回的每一行的開頭位置。

-word: 一個前導的減號表示該單詞一定不能出現(xiàn)在任何返回的行中。

(無操作符):在默認狀態(tài)下(當沒有指定 + 或–的情況下),該單詞可有可無,但含有該單詞的行等級較高。這和MATCH() ... AGAINST()不使用IN BOOLEAN MODE修改程序時的運作很類似。

> 這兩個操作符用來改變一個單詞對賦予某一行的相關(guān)值的影響。 > 操作符增強其影響,而 操作符則減弱其影響。請參見下面的例子。

( )括號用來將單詞分成子表達式。括入括號的部分可以被嵌套。

~word:一個前導的代字號用作否定符, 用來否定單詞對該行相關(guān)性的影響。 這對于標記“noise(無用信息)”的單詞很有用。包含這類單詞的行較其它行等級低。

word* :搜索以word開頭的單詞,只允許出現(xiàn)在單詞的末尾

"word1 word" :給定單詞必須出現(xiàn)在數(shù)據(jù)記錄中,先后順序也必須匹配,區(qū)分字母大小寫

select * from tablename where match(column1,column2) against ('+word1 +word2 -word3' in boolean mode')

布爾檢索只能返回1或者0,不再返回表示匹配程度的浮點數(shù)

全文索引的缺陷:

1.數(shù)據(jù)表越大,全文索引效果好,比較小的數(shù)據(jù)表會返回一些難以理解的結(jié)果。

2.全文檢索以整個單詞作為匹配對象,單詞變形(加上后綴,復(fù)數(shù)形式),就被認為另一個單詞。

3.只有由字母,數(shù)字,單引號,下劃線構(gòu)成的字符串被認為是單詞,帶注音符號的字母仍是字母,像C++不再認為是單詞

4.不區(qū)分大小寫

5.只能在MyISAM上使用

6.全文索引創(chuàng)建速度慢,而且對有全文索引的各種數(shù)據(jù)修改操作也慢

7.不支持中文

以上就是MySQL 全文索引的原理與缺陷的詳細內(nèi)容,更多關(guān)于MySQL 全文索引的資料請關(guān)注腳本之家其它相關(guān)文章!

您可能感興趣的文章:
  • MySQL全文索引、聯(lián)合索引、like查詢、json查詢速度哪個快
  • MySQL全文索引實現(xiàn)簡單版搜索引擎實例代碼
  • MySQL創(chuàng)建全文索引分享
  • MySQL全文索引應(yīng)用簡明教程
  • 基于mysql全文索引的深入理解
  • MySQL 全文索引使用指南

標簽:沈陽 移動 鹽城 黔東 珠海 拉薩 徐州 沈陽

巨人網(wǎng)絡(luò)通訊聲明:本文標題《MySQL 全文索引的原理與缺陷》,本文關(guān)鍵詞  MySQL,全文,索引,的,原理,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL 全文索引的原理與缺陷》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL 全文索引的原理與缺陷的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章