RDS MySQL 全文檢索相關問題
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