日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql ft_mysql全文索引____ft_min_word_len

發(fā)布時間:2025/3/20 数据库 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql ft_mysql全文索引____ft_min_word_len 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

對于剛使用mysql全文索引搜索的童鞋,第一個疑惑可能就是,為什么我搜索xx結(jié)果不顯示呢?明明我數(shù)據(jù)里面有。這個問題有很多種原因,其中最常見的就是ft_min_word_len(最小搜索長度)導(dǎo)致的。

準(zhǔn)備測試數(shù)據(jù)如下CREATE?TABLE?mysql_fulltext

(id?BIGINT?UNSIGNED?AUTO_INCREMENT,

text_info?VARCHAR(1000)?NOT?NULL,

PRIMARY?KEY(id),

FULLTEXT(text_info)

)ENGINE=MYISAM?DEFAULT?CHARSET?utf8?COMMENT?'mysql全文索引測試表';

INSERT?INTO?`mysql_fulltext`(text_info)??VALUES?('a'),('b'),('c'),('aa'),('bb'),('cc'),('aaa'),('bbb'),('ccc'),('aaaa'),('bbbb'),('cccc');

使用如下語句進(jìn)行搜索SELECT?*?FROM?`mysql_fulltext`?WHERE?MATCH(text_info)?AGAINST('a');

SELECT?*?FROM?`mysql_fulltext`?WHERE?MATCH(text_info)?AGAINST('aa');

SELECT?*?FROM?`mysql_fulltext`?WHERE?MATCH(text_info)?AGAINST('aaa');

按照我們的慣性思維,應(yīng)該會顯示四條數(shù)據(jù)才對;但結(jié)果卻是一條數(shù)據(jù)都沒有。

但是我們執(zhí)行SELECT?*?FROM?`mysql_fulltext`?WHERE?MATCH(text_info)?AGAINST('aaaa');

卻有結(jié)果如下:

我們看一下全文索引相關(guān)的參數(shù)設(shè)置。SHOW?GLOBAL?VARIABLES?LIKE?'%ft_%';

5.6之前myisam的全文索引,需要調(diào)節(jié)的參數(shù)相對來說比較少,只有以上五個。ft_boolean_syntax:全文索引分詞關(guān)鍵字,不能更改,為內(nèi)置變量

ft_max_word_len:最大分詞長度,一般情況下不需要更改

ft_min_word_len:最小分詞長度,一般修改為1

ft_query_expansion_limit:不明覺厲的一個參數(shù),基本上不需要設(shè)置

ft_stopword_file:全文停止詞

我們發(fā)現(xiàn)ft_min_word_len為4,默認(rèn)是該值。也就是說,mysql fulltext只會對4個字或者4個字以上的關(guān)鍵字進(jìn)行建立索引操作。而剛剛搜索的'a','aa','aaa'關(guān)鍵字長度都小于4。

全文索引相關(guān)的參數(shù)都無法進(jìn)行動態(tài)修改,我們需要在/etc/my.cnf添加參數(shù)ft_min_word_len=1,并且重啟mysql服務(wù)器,重啟完畢之后,對應(yīng)表執(zhí)行repair操作。理論上,涉及到ft_相關(guān)參數(shù)修改的,都需要重啟服務(wù)器,并且修復(fù)所有含有fulltext索引的表。

使用如下sql語句尋找含有fulltext索引的表SELECT?DISTINCT?CONCAT('repair?table?',table_schema,'.',table_name,'?quick;')?FROM?information_schema.`STATISTICS`?WHERE?index_type='fulltext'

我們修復(fù)mysql_fulltext后,執(zhí)行查詢語句REPAIR?TABLE?mysql_fulltext?QUICK;

SELECT?*?FROM?`mysql_fulltext`?WHERE?MATCH(text_info)?AGAINST('a');

以上查詢,能查詢到對應(yīng)的數(shù)據(jù)。

但是疑問來了,為什么我查詢關(guān)鍵字'a',卻無法搜索出'aa','aaa','aaaa'關(guān)鍵字對應(yīng)的行呢?

有興趣的童鞋可以自行思考一下,或者關(guān)注我后續(xù)的mysql全文索引相關(guān)文章。

與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖

總結(jié)

以上是生活随笔為你收集整理的mysql ft_mysql全文索引____ft_min_word_len的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。