Sql-Server

什麼時候應該使用全文搜尋?

  • November 11, 2016

何時應該使用全文搜尋而不是使用 LIKE 搜尋,例如

SELECT * FROM myTABLE WHERE myCOLUMN LIKE '*something'

來自MSDN - 全文搜尋概述

“全文查詢通過根據特定語言(例如英語或日語)的規則對單詞和片語進行操作,對全文索引中的文本數據執行語言搜尋。全文查詢可以包括簡單的單詞和片語或多種形式的詞或片語。

全文搜尋適用於電子商務等廣泛的業務場景——在網站上搜尋項目;律師事務所——在法律數據庫中搜尋案例歷史;或人力資源部門——將職位描述與儲存的簡歷相匹配。無論業務場景如何,全文搜尋的基本管理和開發任務都是對等的。但是,在給定的業務場景中,可以磨練全文索引和查詢以滿足業務目標。例如,對於電子商務而言,最大化性能可能比結果排名、召回準確性(全文查詢實際返回多少現有匹配項)或支持多種語言更重要。對於一家律師事務所來說,返回每一個可能的打擊(資訊的全部召回)可能是最重要的考慮因素。”

LIKE 與全文搜尋的比較

“與全文搜尋相比,LIKE Transact-SQL 謂詞僅適用於字元模式。此外,您不能使用 LIKE 謂詞查詢格式化的二進制數據。此外,針對大量非結構化文本數據的 LIKE 查詢很多比針對相同數據的等效全文查詢慢。針對數百萬行文本數據的 LIKE 查詢可能需要幾分鐘才能返回;而針對相同數據的全文查詢可能只需幾秒鐘或更短時間,具體取決於數量返回的行數。”

所以主要區別在於他們所做的搜尋類型:全文是關於單詞搜尋,而 LIKE 是關於字元搜尋。我個人會在我有大量人類文本的表格上使用全文搜尋 - 通常是大表格(數百萬行)中的大列(大描述,超過標準 8k 字元)。需要記住為 FTS 增加的管理(創建目錄、索引,在需要時更新它們)。

引用自:https://dba.stackexchange.com/questions/1862