rds mysql 全文檢索相關問題
<a href="#1">1. rds for mysql 對全文檢索的支援</a>
<a href="#2">2. rds for mysql 全文檢索相關參數</a>
<a href="#3">3. rds for mysql 全文檢索中文支援</a>
<a href="#3.1">3.1 myisam 引擎表</a>
<a href="#3.2">3.2 innodb 引擎表</a>
<a href="#4">4. like '%xxx%' 和全文檢索的比較</a>
<a href="#4.1">4.1 like '%xxx%'</a>
<a href="#4.2">4.2 全文檢索</a>
<a href="#5">5. ft_query_expansion_limit 參數作用</a>
rds mysql 5.5 僅 myisam 引擎表支援全文索引,rds mysql 5.6 版本 myisam 和 innodb 引擎都支援全文索引。
可以在控制台
參數設定來設定下列參數。
#
參數名稱
預設值
最小值
最大值
作用
1
ft_min_word_len
4
3600
myisam 引擎表全文索引包含的最小詞長度
2
ft_query_expansion_limit
20
1000
myisam引擎表使用 with query expansion 進行全文搜尋的最大比對數
3
innodb_ft_min_token_size
16
innodb 引擎表全文索引包含的最小詞長度
innodb_ft_max_token_size
84
10
innodb 引擎表全文索引包含的最大詞長度
myisam 引擎表和 innodb 引擎表(需 rds mysql 5.6 版本)都支援中文全文檢索。
myisam 引擎表需要将 ft_min_word_len 設定為小于等于需要檢索的最小分詞長度,設定完畢後建議重新建立表上已有的全文索引;對于中文檢索,建議将 ft_min_word_len 設定為 1。
innodb 引擎表需要将 innodb_ft_min_token_size 設定為小于等于需要檢索的最小分詞長度,設定完畢後建議重新建立表上已有的全文索引;對于中文檢索,建議将 ft_min_word_len 設定為 1。
對于資料量比較小,查詢條件無法分詞的情況下,可以考慮使用 like '%xxx%' 來進行查詢。但是由于 like '%xxx%' 這樣的條件無法使用字段上的索引,是以通常執行時間較長,會耗費比較多的資源;建議結合查詢其他條件來使用,這樣可以盡量使用其他字段的索引來加速查詢。
全文檢索本身是按 詞 進行比對,是以傳回的結果會和 like '%xxx%' 的方式有所差別。
參數 ft_query_expansion_limit 的作用是指定myisam引擎表使用with query expansion進行全文搜尋的最大比對數,下面以一個例子來說明其作用。
參數 ft_query_expansion_limit 目前設定為 20:
目前表中相關的記錄情況:
使用查詢擴充的結果: