首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 全文索引構建與搜索效率提升實戰

     編輯:MySQL 資料庫相關知識

LIKE '%keyword%' 無法使用索引,大表全文搜索極慢。MySQL 全文索引(FULLTEXT)針對文本列建立倒排索引,支援自然語言相關度排序。

創建全文索引

ALTER TABLE articles ADD FULLTEXT INDEX ft_content (content);

驗證:SHOW INDEXES FROM articles; 顯示 Index_type: FULLTEXT。

全文搜索語法

-- 自然語言模式(默認),按相關度降序
SELECT id, title FROM articles
WHERE MATCH(content) AGAINST('MySQL 優化');

-- 布爾模式,支援 + - * 運算符
SELECT id, title FROM articles
WHERE MATCH(content) AGAINST('+MySQL -入門' IN BOOLEAN MODE);

-- 查詢擴展模式
SELECT id, title FROM articles
WHERE MATCH(content) AGAINST('數據庫' WITH QUERY EXPANSION);

關鍵限制與優化

項目說明
最小詞長ft_min_word_len=4(默認),中文需設置為 1 或使用 ngram 解析器(5.7.6+)
停用詞內置停用詞表,可自定義 ft_stopword_file
中文支援5.7+ 內置 ngram 解析器:FULLTEXT INDEX ft_content (content) WITH PARSER ngram
事務隔離5.6+ InnoDB 支援事務一致性全文索引

適用場景

  • 文章、評論、日志等長文本字段的關鍵詞搜索。
  • 中文業務**必須**使用 ngram 解析器,否則單字不分詞無法命中。
  • 超大規模/實時性要求高,建議接入 Elasticsearch/OpenSearch。

全文索引示意

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved