全文檢索搜尋概觀
全文檢索查詢會根據特定語言的規則 (例如英文或日文) 在單字與片語上運作,藉以針對全文檢索索引中的文字資料執行語言搜尋。全文檢索查詢可以包含簡單的單字和片語,或者單字或片語的多種形式。
全文檢索搜尋適用於各種商務案例,例如電子商務 (搜尋網站上的項目)、律師事務所 (在法律資料儲存機制中搜尋個案記錄),或人力資源部門 (比對工作描述與預存的履歷表)。不論商務案例為何,全文檢索搜尋的基本管理和開發工作都是相同的。不過,在給定的商務案例中,可能會調整全文檢索索引和查詢來符合商務目標。例如,對於電子商務而言,發揮最佳效能可能會比排序結果等級、重新叫用精確度 (全文檢索查詢實際傳回的現有相符項目數) 或支援多國語言更重要。對於律師事務所而言,傳回每個可能的叫用 (資訊的「重新叫用總數」(Total Recall)) 可能是最重要的考量。
如何針對全文檢索搜尋設定資料庫的概觀
在任何案例中,資料庫管理員都會執行下列基本步驟,針對全文檢索搜尋設定資料庫中的資料表資料行:
建立全文檢索目錄。
在您想要搜尋的每個資料表上,建立全文檢索索引:
識別您想要包含在全文檢索索引中的每個文字資料行。
如果給定的資料行包含儲存成二進位資料 (varbinary、varbinary(max) 或 image 資料) 的文件,您就必須指定資料表資料行 (「類型資料行」(Type Column)),以便識別要進行索引之資料行中每份文件的類型。
指定您想讓全文檢索搜尋用於資料行中文件的語言。
選擇您想要針對全文檢索索引使用的變更追蹤機制,以便追蹤基底資料表及其資料行中的變更。
全文檢索搜尋會透過使用下列「語言元件」(Linguistic Component) 支援多國語言:斷詞工具和字幹分析器、包含停用字詞 (也稱為非搜尋字) 的停用字詞表,以及同義字檔案。同義字檔案和停用字詞表 (在某些情況下) 會要求資料庫管理員進行組態設定。給定的同義字檔案支援所有使用對應語言的全文檢索索引,而且給定的停用字詞表可以與任意數目的全文檢索索引相關聯。
如需詳細資訊,請參閱<管理全文檢索搜尋>。
全文檢索查詢的概觀
在資料行已經加入至全文檢索索引之後,應用程式和使用者就可以針對資料行中的文字執行全文檢索查詢。這些查詢可以搜尋下列任何項目:
一或多個特定的單字或片語 (「不可分割的詞彙」(Simple Term))
以指定之文字開頭的單字或片語 (「前置詞彙」(Prefix Term))
特定單字的字形變化 (「衍生詞彙」(Generation Term))
靠近另一個單字或片語的單字或片語 (「相近詞彙」(Proximity Term))
特定單字的同義字變化 (「同義字」(Thesaurus))
使用加權值的單字或片語 (「加權詞彙」(Weighted Term))
全文檢索查詢都會使用一小組 Transact-SQL 述詞 (CONTAINS 和 FREETEXT) 與函數 (CONTAINSTABLE 和 FREETEXTTABLE)。不過,給定商務案例的搜尋目標會影響全文檢索查詢的確切結構,例如:
電子商務 - 搜尋網站上的產品:
SELECT product_id FROM products WHERE CONTAINS(product_description, ”Snap Happy 100EZ” OR FORMSOF(THESAURUS,’Snap Happy’) OR ‘100EZ’) AND product_cost<200 …
人員招募案例 - 搜尋具有 SQL Server 使用經驗的工作應徵者:
SELECT candidate_name,SSN FROM candidates WHERE CONTAINS(candidate_resume,”SQL Server”) AND candidate_division =DBA
如需詳細資訊,請參閱<使用全文檢索搜尋查詢 SQL Server>。
LIKE 與全文檢索搜尋的比較
相較於全文檢索搜尋,LIKETransact-SQL 述詞只能針對字元模式運作。您也無法使用 LIKE 述詞來查詢格式化的二進位資料。此外,針對大量非結構化文字資料執行 LIKE 查詢的速度會比針對相同資料執行對等全文檢索查詢的速度要慢很多。對於數百萬列的資料,使用 LIKE 查詢時可能要好幾分鐘才能傳回搜尋結果,但是使用全文檢索查詢時可能只要幾秒鐘的時間 (視傳回的資料列數目而定)。