最近在作mysql優化,涉及到match函數的使用,特地整理一下。mysql
使用MATCH的使用介紹:sql
1.語法糖:
MATCH(title) against('KEY' IN BOOLEAN MODE)
MATCH(title,body) against('KEY' IN BOOLEAN MODE) mysql優化
2.使用注意:
MySql默認支持全文檢索的字符長度是4
能夠用SHOW VARIABLES LIKE 'ft_min_word_len' 來查看指定的字符長度
也能夠在mysql配置文件my.ini 更改最小字符長度,在my.ini 增長一行
好比:ft_min_word_len = 2,改完後重啓mysql便可。 函數
mysql在集和查詢中的對每一個合適的詞都會先計算它們的權重,一個出如今多個文檔中的詞將有較低的權重(可能甚至有一個零權重),由於在這個特定的集中,它有較低的語義值。
不然,若是詞是較少的,它將獲得一個較高的權重,mysql默認的閥值是50%,上面‘you’在每一個文檔都出現,所以是100%,只有低於50%的纔會出如今結果集中。
3.檢索表達式及語法
一。MATCH(title) against('+zhang -lishi ~wangwu zhaoliu*' IN BOOLEAN MODE)
+表示and,-表示not,~表示異或運算符,*表示全部,空格表示or 等等
複製代碼
4.特殊符號處理
當全文檢索碰到特殊符號的時候,會觸發函數自動對檢索條件進行分詞搜索。
注意:一些特殊符號屬於函數的保留符號,函數會把符號解析成條件進行分詞
例如:欣欣貿易(北京)有限公司 會自動拆分紅 欣欣貿易,北京,有限公司去作搜索,返回包含欣欣貿易或者北京或者有限公司的記錄。
這裏注意下:mysql默認檢索長度是4,這些條件中北京是兩個字符,不會觸發檢索
也就是說最後檢索的結果是隻包含 欣欣貿易和有限公司 這兩個條件的數據優化
不觸發自動分詞,須要把本身的檢索條件用「雙引號」包含起來
例如:MATCH(title) against('「欣欣貿易(北京)有限公司」 「大華貿易(北京)股份有限公司」' IN BOOLEAN MODE)
上面所述但願能對你們有幫助!spa