設定及管理斷字工具和詞幹分析器

適用於:SQL ServerAzure SQL DatabaseAzure SQL 受控實例

斷詞工具和詞幹分析器會對所有全文索引資料進行語言分析。 語言分析會執行下列兩項作業:

  • 尋找文字字界 (詞彙分割)。 「斷詞工具」會根據語言的語彙規則,判斷文字分界存在的位置,藉以識別個別單字。 每個單字 (也稱為 Token) 都會使用壓縮表示來插入全文檢索索引中,以便減少其大小。

  • 結合動詞 (字幹分析)。 「字幹分析器」會根據該語言的規則來產生某個單詞的屈折形式 (例如,"running"、"ran" 和 "runner" 是 "run" 單字的不同形態)。

斷詞工具和字幹分析器是語言專屬的

斷詞工具與詞幹提取工具是語言特有的工具,而且語言分析的規則會因不同的語言而有所差異。 特定語言的斷詞工具可讓針對該語言產生的詞彙更正確。

若要使用 SQL Server Database Engine 針對其支援的所有語言所提供的斷字器和字幹分析器,通常不必採取任何動作。

  • 若存在斷詞工具適用於語言系列,但不適用於特定子語言,則會使用主要語言的斷詞工具。 例如,處理加拿大法文時會使用法文文字分隔工具。

  • 如果某種特定語文沒有文字分隔,則會使用中性文字分隔。 使用中性文字分隔時,會以中性字元來中斷文字,例如空白與標點符號。

取得支援語言的清單

要查看 Full-Text 搜尋支援的語言列表,請使用以下 Transact-SQL 語句。 出現在此清單中的語言表示該語言有註冊字詞分隔工具。

SELECT *
FROM sys.fulltext_languages;

取得已註冊的斷詞工具清單

若要讓全文檢索使用語言的斷詞程式,必須先註冊。 對於已註冊的斷字元件,相關的語言資源也可供全文索引與查詢作業使用。 這些資源包括詞幹提取器、無意義詞(停用詞)以及同義詞庫檔案。

若要查看已註冊的斷詞工具元件清單,請使用下列陳述式。

EXECUTE sp_help_fulltext_system_components 'wordbreaker';
GO

如需詳細資訊,請參閱 sp_help_fulltext_system_components。

如果您新增或移除斷詞符號

如果您加入、移除或更改了斷詞工具,就必須重新整理支援全文檢索索引和查詢的 Microsoft Windows 地區設定識別碼 (LCID) 清單。 欲了解更多資訊,請參閱 「自訂篩選器與字斷詞」。

設定預設全文檢索語言選項

若為當地語系化的 SQL Server 本,SQL Server 安裝程式就會將 default full-text language 選項設定為伺服器的語言 (如果有相符項目存在的話)。 若 SQL Server 非當地語系化的版本,則 default full-text language 選項會是英文。

建立或更改全文檢索索引時,您可以為每個全文檢索索引資料行指定不同的語言。 如果沒有為資料行指定語言,則預設值會是 [預設全文檢索語言] 組態選項的值。

請注意

單一全文查詢函式子句中列出的所有欄位必須使用相同語言,除非查詢中特別指定選項 LANGUAGE 。 查詢之全文檢索索引資料行所用的語言會決定要對全文檢索查詢述詞 (CONTAINS 和 FREETEXT) 與函數 (CONTAINSTABLE 和 FREETEXTTABLE) 之引數執行的語言分析。

選擇已編索引欄位的語言

當你建立全文索引時,為每個索引欄位指定一種語言。 如果未指定數據行的語言,則會使用系統默認語言。 資料行的語言會決定哪些斷詞工具和字幹分析器要用於建立該資料行的索引。 此外,該語言的同義字檔案會被用於對欄位進行全文檢索的查詢。

在選擇資料行語言以建立全文檢索索引時,必須考慮一些事項。 這些考量與文字如何令牌化,然後如何由全文引擎編製索引有關。 欲了解更多資訊,請參閱 「建立全文索引時選擇語言」。

若要檢視特定資料行的斷詞語言,請執行下列指令。

SELECT language_id AS 'LCID'
FROM sys.fulltext_index_columns;

如需詳細資訊,請參閱 sys.fulltext_index_columns。

針對斷詞逾時錯誤進行疑難解答

在各種情況下,可能會發生斷詞逾時錯誤。 如需這些情況以及如何在每個情況中回應的資訊,請參閱 MSSQLSERVER_30053。

關於MSSQLSERVER_30053錯誤的資訊

屬性 值
產品名稱 SQL Server
事件識別碼 30053
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 FTXT_QUERY_E_WORDBREAKINGTIMEOUT(字分割超時錯誤)
訊息文字 全文檢索查詢字串的斷詞工作逾時。 如果斷詞工具處理全文搜尋字串的時間過長,或伺服器上有大量查詢正在執行,就可能發生此問題。 請嘗試在負載較輕時再執行一次查詢。

說明

斷詞逾時錯誤可能會在下列情況中發生:

  • 查詢語言的斷詞工具設定不正確。 例如,它的登錄檔設定錯誤。

  • 斷詞工具針對某些特定的查詢字串發生故障。

  • 斷詞工具針對特定的查詢字串傳回太多資料。 多餘資料會被視為可能的緩衝區溢位攻擊,並關閉裝載文字斷詞服務的篩選常駐程式(fdhost.exe)。

  • 篩選背景程式處理序的組態不正確。

    最常見的組態問題是密碼逾期或讓篩選背景程式帳戶無法登入的網域原則。

  • 伺服器執行個體正在執行非常繁重的查詢工作負載。 例如,分詞器花了很長時間來處理全文查詢字串,或者伺服器上正在執行大量查詢。 這是最不可能的原因。

使用者動作

請選取適用於逾時可能原因的使用者動作,如下所示:

可能的原因 使用者動作
查詢語言的斷詞工具設定不正確。 如果您使用第三方斷詞工具,它可能未正確向作業系統註冊。 在此情況下,請重新註冊斷詞工具。 如需詳細資訊,請參閱 將 Full-Text Search 使用的斷字元還原為先前版本。
斷詞工具針對某些特定的查詢字串發生故障。 如果資料庫引擎支援該斷字器,請聯絡 Microsoft 客戶服務與支援。
斷詞工具針對特定的查詢字串傳回太多資料。 如果資料庫引擎支援該斷字元件,請聯絡 Microsoft 客戶服務與支援。
篩選背景程式處理序的組態不正確。 請確定您使用目前的密碼,且網域原則不會防止篩選精靈帳戶登入。
伺服器執行個體正在執行非常繁重的查詢工作負載。 請嘗試在負載較輕時再執行一次查詢。

了解更新斷詞工具的影響

每個版本的 資料庫引擎 都可能包含更新的斷詞器以及經修訂的語言規則。 這些更新後的單字斷字器可能與從舊版 資料庫引擎 匯入的全文索引中的斷字器行為不同。

若在資料庫升級至最新版本 資料庫引擎 時匯入了全文目錄,這點尤為重要。 全文檢索目錄中全文檢索索引所使用的一種或多種語言現在可能會與新的斷詞工具相關聯。 如需詳細資訊,請參閱 升級全文檢索搜尋。