文件首頁
MySQL 9.0 參考手冊
相關文件 下載本手冊
PDF (美式 Letter) - 40.0Mb
PDF (A4) - 40.1Mb
Man Pages (TGZ) - 258.2Kb
Man Pages (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 參考手冊  /  函數和運算符  /  全文檢索函數

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 — 顯示全文索引資訊」