文件首頁
MySQL 8.4 參考手冊
相關文件 下載本手冊
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
Man Pages (TGZ) - 258.5Kb
Man Pages (Zip) - 365.5Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 8.4 參考手冊  /  函數與運算子  /  全文搜尋函數

14.9 全文搜尋函數

MATCH (col1,col2,...) AGAINST (expr [search_modifier])

search_modifier:
  {
       IN NATURAL LANGUAGE MODE
     | IN NATURAL LANGUAGE MODE WITH QUERY EXPANSION
     | IN BOOLEAN MODE
     | WITH QUERY EXPANSION
  }

MySQL 支援全文索引和搜尋

全文搜尋是使用 MATCH() AGAINST() 語法執行。MATCH() 採用以逗號分隔的清單,列出要搜尋的資料行。AGAINST 採用要搜尋的字串和一個選擇性的修飾符,指示要執行的搜尋類型。搜尋字串必須是查詢評估期間保持不變的字串值。例如,這會排除表格資料行,因為每個資料列的值可能會有所不同。

MySQL 不允許使用 MATCH() 的匯總資料行;更具體來說,符合此處列出的所有條件的任何查詢都會遭到拒絕,並顯示 ER_FULLTEXT_WITH_ROLLUP

  • MATCH() 出現在查詢區塊的 SELECT 清單、GROUP BY 子句、HAVING 子句或 ORDER BY 子句中。

  • 查詢區塊包含 GROUP BY ... WITH ROLLUP 子句。

  • 呼叫 MATCH() 函數的引數是其中一個群組資料行。

以下顯示一些這類查詢的範例

# MATCH() in SELECT list...
SELECT MATCH (a) AGAINST ('abc') FROM t GROUP BY a WITH ROLLUP;
SELECT 1 FROM t GROUP BY a, MATCH (a) AGAINST ('abc') WITH ROLLUP;

# ...in HAVING clause...
SELECT 1 FROM t GROUP BY a WITH ROLLUP HAVING MATCH (a) AGAINST ('abc');

# ...and in ORDER BY clause
SELECT 1 FROM t GROUP BY a WITH ROLLUP ORDER BY MATCH (a) AGAINST ('abc');

允許在 WHERE 子句中搭配匯總資料行使用 MATCH()

全文搜尋有三種類型

  • 自然語言搜尋會將搜尋字串解譯為自然人類語言中的詞組(自由文字中的詞組)。除了雙引號 (") 字元外,沒有特殊運算子。停用詞清單適用。如需停用詞清單的詳細資訊,請參閱第 14.9.4 節,「全文停用詞」

    如果給定 IN NATURAL LANGUAGE MODE 修飾符,或者如果未給定修飾符,則全文搜尋是自然語言搜尋。如需詳細資訊,請參閱第 14.9.1 節,「自然語言全文搜尋」

  • 布林搜尋會使用特殊查詢語言的規則來解譯搜尋字串。該字串包含要搜尋的詞語。它還可以包含運算子,以指定比對的列中必須存在或不存在某個詞語,或者該詞語的權重應該高於或低於平常。某些常見詞語(停用詞)會從搜尋索引中省略,如果出現在搜尋字串中,則不會比對。 IN BOOLEAN MODE 修飾詞指定布林搜尋。如需更多資訊,請參閱第 14.9.2 節,「布林全文搜尋」

  • 查詢擴展搜尋是對自然語言搜尋的修改。搜尋字串用於執行自然語言搜尋。然後,從搜尋返回的最相關列中的詞語會被添加到搜尋字串中,並再次執行搜尋。查詢會傳回第二次搜尋中的列。IN NATURAL LANGUAGE MODE WITH QUERY EXPANSIONWITH QUERY EXPANSION 修飾詞指定查詢擴展搜尋。如需更多資訊,請參閱第 14.9.3 節,「使用查詢擴展的全文搜尋」

有關 FULLTEXT 查詢效能的資訊,請參閱第 10.3.5 節,「資料行索引」

有關 InnoDB FULLTEXT 索引的更多資訊,請參閱第 17.6.2.4 節,「InnoDB 全文索引」

全文搜尋的限制列於第 14.9.5 節,「全文限制」

myisam_ftdump 公用程式會傾印 MyISAM 全文索引的內容。這對於除錯全文查詢可能很有幫助。請參閱第 6.6.3 節,「myisam_ftdump — 顯示全文索引資訊」