sys.dm_fts_parser (Transact-SQL)
適用於:SQL Server
將指定的 斷詞工具、 同義字和 停用字詞表 組合套用至查詢字串輸入之後,傳回最終的標記化結果。 標記化結果相當於指定查詢字串之全文檢索引擎的輸出。
sys.dm_fts_parser
是動態管理功能。
語法
sys.dm_fts_parser ( 'query_string' , lcid , stoplist_id , accent_sensitivity )
引數
query_string
您要剖析的查詢。 query_string可以是 CONTAINS 語法支援的字串鏈結。 例如,您可以包含轉折形式、同義字和邏輯運算符。
lcid
用於剖 析query_string之斷詞工具的地區設定標識碼 (LCID)。
stoplist_id
停用字詞表的標識碼,如果有的話,由 lcid 所識別的斷詞工具使用。 stoplist_id為 int。如果您指定 『NULL』,就不會使用停用字詞表。 如果您指定 0,則會使用系統 STOPLIST。
停用字詞表標識碼在資料庫中是唯一的。 若要取得指定數據表上全文檢索索引的停用字詞表標識碼,請使用 sys.fulltext_indexes 目錄檢視。
accent_sensitivity
布爾值,可控制全文搜索是否敏感或不區分讀音符號。 accent_sensitivity位,具有下列其中一個值:
值 | 區分腔調字... |
---|---|
0 | 感覺遲鈍的 「咖啡館」和「咖啡館」等字會以相同方式處理。 |
1 | 區分 “café” 和 “café” 等字會以不同的方式處理。 |
注意
若要檢視全文檢索目錄的這個值目前設定,請執行下列 Transact-SQL 語句: SELECT fulltextcatalogproperty('<catalog_name>', 'AccentSensitivity');
。
傳回的資料表
資料行名稱 | 資料類型 | 描述 |
---|---|---|
keyword | varbinary(128) | 斷詞工具所傳回之指定關鍵詞的十六進位表示法。 這個表示法是用來將 關鍵詞儲存在全文檢索索引中。 這個值不是人類可讀取的,但有助於將指定的關鍵詞與傳回全文檢索索引內容的其他動態管理檢視所傳回的輸出建立關聯,例如 sys.dm_fts_index_keywords 和 sys.dm_fts_index_keywords_by_document。 注意: 0xFF 表示表示檔案或數據集結尾的特殊字元。 |
group_id | int | 包含整數值,這個值很適合用來區分產生指定字詞的邏輯群組。 例如,『Server AND DB OR FORMSOF(THESAURUS, DB)" ' 會以英文產生下列group_id值:1:伺服器 2:DB 3:DB |
phrase_id | int | 包含一個整數值,這個值有助於區分替代形式的複合字,例如全文檢索,是由斷詞工具所發出。 有時候,有複合字詞存在(『數百萬個』),替代形式是由斷詞工具所發出。 這些替代形式(片語)有時需要區分。 例如,『 multi-million ' 會以英文產生下列phrase_id值:1 for multi 1 for million 2 for multimillion |
occurrence | int | 表示剖析結果中每個字詞的順序。 例如,針對片語發生SQL Server query processor ,會包含片語中字詞的下列出現值,英文:1 for SQL 2 for Server 3 for query 4 for processor |
special_term | nvarchar(4000) | 包含斷詞工具所發出之字詞特性的相關信息,其中一個: - 完全相符 - 雜訊字 - 句子結尾 - 段落結尾 - 章節結尾 |
display_term | nvarchar(4000) | 包含人類可讀取的關鍵詞形式。 如同設計來存取全文檢索索引內容的函式,由於反正規化限制,此顯示的字詞可能與原始字詞不同。 不過,它應該足夠精確,可協助您從原始輸入中識別它。 |
expansion_type | int | 包含指定詞彙擴充本質的相關信息,其中一個: 0 = 單字大小寫 2 = 轉折展開 4 = 同義字擴充/取代 例如,假設同義字將執行定義為的擴充 jog :<expansion> <sub>run</sub> <sub>jog</sub> </expansion> 此字詞 FORMSOF (FREETEXT, run) 會產生下列輸出:run with expansion_type = 0runs with expansion_type = 2running with expansion_type = 2ran with expansion_type = 2jog with expansion_type = 4 |
source_term | nvarchar(4000) | 產生或剖析指定字詞的字詞或片語。 例如,上的 '"word breakers" AND stemmers' 查詢會產生下列 英文source_term 值:word breakers 適用於display_term word word breakers 適用於display_term breakers stemmers 適用於display_term stemmers |
備註
sys.dm_fts_parser
支援全文檢索述詞的語法和功能,例如 CONTAINS 和 FREETEXT,以及 CONTAINSTABLE 和 FREETEXTTABLE 等函式。
使用 Unicode 來剖析特殊字元
當您剖析查詢字串時, sys.dm_fts_parser
除非您將查詢字串指定為 Unicode,否則會使用您所連接的資料庫的定序。 因此,針對包含特殊字元的非 Unicode 字串,例如 ü 或 ç,視資料庫的定序而定,輸出可能會非預期。 若要處理獨立於資料庫定序的查詢字串,請在字串前面加上 N
,也就是 N'
query_string'
。
如需詳細資訊,請參閱 C.顯示 本文稍後包含特殊字元 的字串輸出。
使用sys.dm_fts_parser的時機
sys.dm_fts_parser
對於偵錯目的而言,可能很強大。 某些主要使用案例包括:
若要瞭解指定斷詞工具如何處理指定的輸入
當查詢傳回非預期的結果時,可能是斷詞工具剖析和中斷數據的方式。 藉由使用
sys.dm_fts_parser
,您可以探索斷詞工具傳遞至全文檢索索引的結果。 此外,您可以看到哪些字詞是停用字詞,這些字詞不會在全文檢索索引中搜尋。 字詞是否為指定語言的停用字詞,取決於它是否位於函式中宣告之stoplist_id值所指定的停用字詞清單中。區分腔調字旗標可讓您查看斷詞工具剖析輸入的方式,並考慮到其腔調敏感度資訊。
若要瞭解字幹分析器在指定輸入上的運作方式
您可以藉由指定 CONTAINS 或 CONTAINSTABLE 查詢包含下列 FORMSOF 子句的 CONTAINS 或 CONTAINSTABLE 查詢,找出斷詞工具和字幹分析器如何剖析查詢字詞及其字幹分析形式:
FORMSOF( INFLECTIONAL, query_term )
結果會告訴您將哪些字詞傳遞至全文檢索索引。
若要瞭解同義字如何展開或取代所有或部分輸入
您也可以指定:
FORMSOF( THESAURUS, query_term )
此查詢的結果會顯示斷詞工具和同義字如何與查詢字詞互動。 您可以看到同義字中的擴充或取代專案,並識別實際針對全文檢索索引發出的結果查詢。
如果使用者發出下列問題:
FORMSOF( FREETEXT, query_term )
自動進行變化和同義字功能。
除了上述使用案例之外, sys.dm_fts_parser
還可以大幅瞭解和疑難解答全文檢索查詢的其他許多問題。
權限
需要 CREATE FULLTEXT CATALOG 許可權,以及指定停用字詞表的訪問許可權。
範例
A. 顯示關鍵詞或片語之指定斷詞工具的輸出
下列範例會使用英文斷詞工具傳回 的輸出,其 LCID 為 1033,且下列查詢字串上沒有停用字詞表:
The Microsoft business analysis
已停用區分腔調字。
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" ', 1033, 0, 0);
B. 在停用字詞表篩選的內容中顯示指定斷詞工具的輸出
下列範例會使用英文斷詞工具傳回的輸出,其 LCID 為 1033,而英文停用字詞表的識別碼為 77,則位於下列查詢字串中:
"The Microsoft business analysis" OR "MS revenue"
已停用區分腔調字。
SELECT * FROM sys.dm_fts_parser (' "The Microsoft business analysis" OR " MS revenue" ', 1033, 77, 0);
C. 顯示包含特殊字元的字串輸出
下列範例會使用 Unicode 來剖析下列法文字串:
français
此範例會指定法文語言的 LCID, 1036
以及使用者定義停用字詞表 5
的識別碼。 已啟用腔調敏感度。
SELECT * FROM sys.dm_fts_parser(N'français', 1036, 5, 1);