MySQL 4.0+ 支援全文索引,但預設 ft_min_word_len = 4,導致中文單字 (通常 1-2 字) 無法被索引。本文說明修改參數、重建索引的完整步驟,讓中文全文搜尋生效。
ALTER TABLE articles ADD FULLTEXT(content);my.cnf Linux / my.ini Windows):
[mysqld]
ft_min_word_len = 2 # 設為 1~3 均可,建議 2 (支援雙字詞)
systemctl restart mysqld # Linux
net stop mysql & net start mysql # Windows
ALTER TABLE articles DROP INDEX content; -- 刪除舊索引
ALTER TABLE articles ADD FULLTEXT(content); -- 重建
或使用 REPAIR TABLE articles QUICK; (僅 MyISAM)。
SHOW VARIABLES LIKE 'ft_min_word_len'; -- 應顯示 2
SELECT * FROM articles WHERE MATCH(content) AGAINST('資料庫'); -- 應有結果
| ft_min_word_len | 索引大小 | 搜尋精度 | 適用語言 |
|---|---|---|---|
| 1 | 最大 (含單字) | 最低 (雜訊多) | 中文/日文/韓文 |
| 2 | 大 | 良好 (雙字詞為主) | **中文推薦** |
| 3 | 中 | 佳 | 混合語系 |
| 4 (預設) | 較小 | 英文佳、中文失效 | 英文為主 |
無需修改 ft_min_word_len,直接指定解析器即可支援中文單字:
CREATE TABLE articles (
id INT PRIMARY KEY,
content TEXT,
FULLTEXT(content) WITH PARSER ngram
) ENGINE=InnoDB;
MATCH(content) AGAINST('資料庫')。ft_min_word_len = 2 方案。ft_min_word_len 為**全域參數**,影響該實例**所有**全文索引,需評估現有應用相容性。突破 4 字元限制,讓 MySQL 全文索引真正支援中文搜尋,是提升應用搜尋體驗的關鍵一步。