SQL Server 提供全文檢索引擎,建立對應的索引後,可以做到比 %LIKE%
更有效率、彈性更高的查詢。
查詢指令摘要
在使用全文檢索之前,需要先:
- 建立全文檢索目錄。
- 建立全文檢索索引。
完成後,可以用以下的指令查詢資料,摘要如下:
語法 | 說明 |
---|---|
CONTAINS | 用於 WHERE 子句,可以用關鍵字做模糊、精確的全文檢索。可以比對同義字、類似單字、前置詞。 |
CONTAINSTABLE |
必須用在 FROM 子句中,和 CONTAINS 相同,可以進行精確或模糊搜尋,但多了名次 (Rank) 和全文搜尋的索引鍵。 |
FORMSOF(THESAURUS, ‘關鍵字’) |
表示查詢包含同義字的關鍵字 |
FREETEXTTABLE |
表示包含同義字的關鍵字模糊查詢 |
詳細的建立的方式、語句列表與用法,可參考:
同義字與字典
同義字指的是意思相同 (相近) 卻不同的詞語,查詢時不同的詞語應該要查出一樣 (或相近) 的結果,例如:機場、航空站。
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\FTData
內有 tscht.xml
的檔案。此檔案是一個 XML 檔,可以用文字編輯器設定繁體中文的同義字。 詳情可參考 MS SQL 全文檢索搜尋-設定同義字。
由於中文的全文查詢需要依賴字典分詞,如果覺得特定關鍵字的查詢效果不佳,也可以自訂字典,調整分詞以改善查詢效果:使用自訂字典自訂文字分隔行為 - SQL Server - Microsoft Learn
應該避免使用的字元
如果查詢時輸入萬用字元 * 符號,例如 FORMSOF(THESAURUS, "*")
,可能會導致語法錯誤或無效的查詢。此外,? 問號和 “ 引號可能也會引發語法錯誤。