sys.dm_fts_parser (Transact-SQL)
傳回將給定斷詞工具、同義字和停用字詞表組合套用至查詢字串輸入之後的最終 Token 化結果。 Token 化結果就相當於指定之查詢字串的全文檢索引擎輸出。
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 是 bit,包含下列其中一個值:值
是否區分腔調字…
0
不區分
"café" 和 "cafe" 等字會視為完全相同。
1
區分
"café" 和 "cafe" 等字會視為不同。
[!附註]
若要針對全文檢索目錄來檢視這個值的目前設定,請執行下列 Transact-SQL 陳述式:SELECT fulltextcatalogproperty('catalog_name', 'AccentSensitivity');。
傳回的資料表
資料行名稱 |
資料類型 |
說明 |
||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
keyword |
varbinary(128) |
斷詞工具所傳回之給定關鍵字的十六進位表示法。 這個表示法是用來將關鍵字儲存在全文檢索索引中。 雖然這個值並非人們可讀取,但是它可用於將給定關鍵字與傳回全文檢索索引內容之其他動態管理檢視所傳回的輸出相關,例如 sys.dm_fts_index_keywords 和 sys.dm_fts_index_keywords_by_document。
|
||||||||||
group_id |
int |
包含可用於區分從中產生給定詞彙之邏輯群組的整數值。 例如,'Server AND DB OR FORMSOF(THESAURUS, DB)"' 會以英文產生下列 group_id 值:
|
||||||||||
phrase_id |
int |
包含可用於區分斷詞工具發出複合字 (例如 full-text) 之替代形式所處情況的整數值。 有時候,如果存在複合字 ('multi-million'),斷詞工具就會發出替代形式。 這些替代形式 (片語) 有時必須加以區別。 例如,'multi-million' 會以英文產生下列 phrase_id 值:
|
||||||||||
occurrence |
int |
指出剖析結果中每個詞彙的順序。 例如,若為 "SQL Server query processor" 片語,occurrence 就會使用英文針對此片語中的詞彙包含下列 occurrence 值:
|
||||||||||
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,且 expansion_type=0 runs,且 expansion_type=2 running,且 expansion_type=2 ran,且 expansion_type=2 jog,且 expansion_type=4 |
||||||||||
source_term |
nvarchar(4000) |
從中產生或剖析給定詞彙的詞彙或片語。 例如,'"word breakers" AND stemmers' 的查詢會以英文產生下列 source_term 值:
|
備註
sys.dm_fts_parser 支援全文檢索述詞 (例如 CONTAINS 和 FREETEXT) 與函數 (例如 CONTAINSTABLE 和 FREETEXTTABLE) 的語法和功能。
使用 Unicode 剖析特殊字元
在剖析查詢字串時,sys.dm_fts_parser 會使用所連接之資料庫的定序,除非您將查詢字串指定為 Unicode。 因此,對於包含 ü 或 ç 之類特殊字元的非 Unicode 字串,輸出可能會是非預期的 (根據資料庫的定序而定)。 若要個別處理資料庫定序的查詢字串,請在字串之前加上 N 前置詞,也就是 N'query_string'。
如需詳細資訊,請參閱本主題稍後的 「顯示包含特殊字元之字串的輸出」。
何時使用 sys.dm_fts_parser
sys.dm_fts_parser 對於偵錯用途的功能可能非常強大。 某些主要的使用狀況包括:
了解給定的斷詞工具如何處理給定的輸入
當查詢傳回非預期的結果時,可能的原因就是斷詞工具正在剖析資料和進行斷詞。 使用 sys.dm_fts_parser 可以探索斷詞工具傳遞給全文檢索索引的結果。 此外,您可以查看哪些詞彙是不會在全文檢索索引中搜尋的停用字詞。 某個詞彙是否為給定語言的停用字詞完全取決於它是否位於函數中宣告之 stoplist_id 值所指定的停用字詞表中。
此外,請注意區分腔調字旗標,這個旗標會允許使用者查看斷詞工具如何在記住區分腔調字資訊時剖析輸入。
了解字幹分析器如何針對給定的輸入運作
您可以透過指定包含下列 FORMSOF 子句的 CONTAINS 或 CONTAINSTABLE 查詢,了解斷詞工具和字幹分析器如何剖析查詢詞彙及其字幹形式:
FORMSOF( INFLECTIONAL, query_term )
結果將會告知您哪些詞彙正傳遞給全文檢索索引。
了解同義字如何展開或取代所有或部分輸入
您也可以指定:
FORMSOF( THESAURUS, query_term )
這項查詢的結果顯示斷詞工具和同義字如何針對查詢詞彙進行互動。 您可以從同義字中查看展開或取代,而可識別實際針對全文檢索索引發出的結果查詢。
請注意,如果使用者發出:
FORMSOF( FREETEXT, query_term )
字形和同義字功能就會自動生效。
除了上述使用狀況以外,sys.dm_fts_parser 還可以有效協助您了解並疑難排解全文檢索查詢的許多其他問題。
權限
需要系統管理員 (sysadmin) 固定伺服器角色中的成員資格以及指定之停用字詞表的存取權限。
範例
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);
請參閱
參考
全文檢索搜尋與語意搜尋動態管理檢視和函數 (Transact-SQL)