天天看點

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

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 引擎都支援全文索引。

可以在控制台 

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

 參數設定來設定下列參數。

#

參數名稱

預設值

最小值

最大值

作用

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。

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

innodb 引擎表需要将 innodb_ft_min_token_size 設定為小于等于需要檢索的最小分詞長度,設定完畢後建議重新建立表上已有的全文索引;對于中文檢索,建議将 ft_min_word_len 設定為 1。

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

對于資料量比較小,查詢條件無法分詞的情況下,可以考慮使用 like '%xxx%' 來進行查詢。但是由于 like  '%xxx%' 這樣的條件無法使用字段上的索引,是以通常執行時間較長,會耗費比較多的資源;建議結合查詢其他條件來使用,這樣可以盡量使用其他字段的索引來加速查詢。

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

全文檢索本身是按 詞 進行比對,是以傳回的結果會和 like '%xxx%' 的方式有所差別。

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

參數 ft_query_expansion_limit 的作用是指定myisam引擎表使用with query expansion進行全文搜尋的最大比對數,下面以一個例子來說明其作用。

參數 ft_query_expansion_limit 目前設定為 20:

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

目前表中相關的記錄情況:

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

使用查詢擴充的結果:

RDS for MySQL 全文檢索相關問題的處理RDS for MySQL 全文檢索相關問題的處理

繼續閱讀