標籤:
RDS MySQL 全文檢索索引相關問題
1. RDS MySQL 對全文檢索索引的支援
2. RDS MySQL 全文檢索索引相關參數
3. RDS MySQL 全文檢索索引中文支援
3.1 MyISAM 引擎表
3.2 InnoDB 引擎表
4. like ‘%xxx%‘ 和全文檢索索引的比較
4.1 like ‘%xxx%‘
4.2 全文檢索索引
5. ft_query_expansion_limit 參數作用
1. RDS MySQL 對全文檢索索引的支援
RDS MySQL 5.5 僅 MyISAM 引擎表支援全文索引,RDS MySQL 5.6 版本 MyISAM 和 InnoDB 引擎都支援全文索引。
2. RDS MySQL 全文檢索索引相關參數
可以在控制台 參數設定來設定下列參數。
| # |
參數名稱 |
預設值 |
最小值 |
最大值 |
作用 |
| 1 |
ft_min_word_len |
4 |
1 |
3600 |
MyISAM 引擎表全文索引包含的最小詞長度 |
| 2 |
ft_query_expansion_limit |
20 |
0 |
1000 |
MyISAM引擎表使用 with query expansion 進行全文檢索搜尋的最大匹配數 |
| 3 |
innodb_ft_min_token_size |
3 |
0 |
16 |
InnoDB 引擎表全文索引包含的最小詞長度 |
| 4 |
innodb_ft_max_token_size |
84 |
10 |
84 |
InnoDB 引擎表全文索引包含的最大詞長度 |
show global variables like ‘ft_%‘; --查看 MyISAM 引擎表全文檢索索引相關參數show global variables like ‘innodb_ft%‘; --查看 InnoDB 引擎表全文檢索索引相關參數
3. RDS MySQL 全文檢索索引中文支援
MyISAM 引擎表和 InnoDB 引擎表(需 RDS MySQL 5.6 版本)都支援中文全文檢索索引。
3.1 MyISAM 引擎表
MyISAM 引擎表需要將 ft_min_word_len 設定為小於等於需要檢索的最小分詞長度,設定完畢後建議重新建立表上已有的全文索引;對於中文檢索,建議將 ft_min_word_len 設定為 1。
CREATE TABLE `my_ft_test_02` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` text, PRIMARY KEY (`id`), FULLTEXT KEY `idx_ft_name` (`name`)) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;--重建全文索引步驟:alter table my_ft_test_02 drop key idx_ft_name; --刪除已有的全文索引alter table my_ft_test_02 add fulltext key idx_ft_name (name); --重新添加全文索引
3.2 InnoDB 引擎表
InnoDB 引擎表需要將 innodb_ft_min_token_size 設定為小於等於需要檢索的最小分詞長度,設定完畢後建議重新建立表上已有的全文索引;對於中文檢索,建議將 ft_min_word_len 設定為 1。
CREATE TABLE `my_ft_test_01` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` text, PRIMARY KEY (`id`), FULLTEXT KEY `idx_ft_name` (`name`)) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;--重建全文索引的步驟:alter table my_ft_test_01 drop key idx_ft_name; --刪除已有的全文索引alter table my_ft_test_01 add fulltext key idx_ft_name (name); --重新建立全文索引
4. like ‘%xxx%‘ 和全文檢索索引的比較
4.1 like ‘%xxx%‘
對於資料量比較小,查詢條件無法分詞的情況下,可以考慮使用 like ‘%xxx%‘ 來進行查詢。但是由於 like ‘%xxx%‘ 這樣的條件無法使用欄位上的索引,因此通常執行時間較長,會耗費比較多的資源;建議結合查詢其他條件來使用,這樣可以盡量使用其他欄位的索引來加速查詢。
4.2 全文檢索索引
全文檢索索引本身是按 詞 進行匹配,因此返回的結果會和 like ‘%xxx%‘ 的方式有所區別。
5. ft_query_expansion_limit 參數作用
MySQL 全文檢索索引支援擴充檢索,具體請參考 帶查詢擴充的全文檢索索引
參數 ft_query_expansion_limit 的作用是指定MyISAM引擎表使用with query expansion進行全文檢索搜尋的最大匹配數,下面以一個例子來說明其作用。
參數 ft_query_expansion_limit 當前設定為 20:
當前表中相關的記錄情況:
使用查詢擴充的結果:
如果問題還未能解決,請聯絡售後支援人員。
jpg改rar
RDS MySQL 全文檢索索引相關問題的處理