Share via


sp_fulltext_keymappings (Transact-SQL)

傳回文件識別碼 (DocId) 和全文檢索索引鍵值之間的對應。DocId 資料行含有 bigint 整數的値,此整數會對應到全文檢索索引資料表中的特定全文檢索索引鍵值。滿足搜尋條件的 DocId 值會從全文檢索引擎傳送至 Database Engine,在此處會將這些值對應到正在查詢之基底資料表中的全文檢索索引鍵值。全文檢索索引鍵資料行是資料表單一資料行上需要的唯一索引。 

主題連結圖示Transact-SQL 語法慣例

語法

sp_fulltext_keymappings { table_id | table_id, docid | table_id, NULL, key }

參數

  • table_id
    這是全文檢索索引資料表的物件識別碼。如果指定了無效的 table_id,就會傳回錯誤。如需有關取得資料表物件識別碼的詳細資訊,請參閱<OBJECT_ID (Transact-SQL)>。

  • docid
    這是對應至索引鍵值的內部文件識別碼 (DocId)。無效的 docid 値不會傳回任何結果。如需有關文件識別碼的詳細資訊,請參閱<全文檢索索引結構>。

  • key
    這是來自指定資料表的全文檢索索引鍵值。無效的 key 値不會傳回任何結果。如需有關全文檢索索引鍵值的詳細資訊,請參閱<如何:查詢全文檢索索引鍵資料行 (Transact-SQL)>。

重要事項重要事項

如需有關使用一個、兩個或三個參數的詳細資訊,請參閱本主題稍後的「備註」。

傳回碼值

無。

結果集

資料行名稱

資料類型

描述

DocId

bigint

這是對應至索引鍵值的內部文件識別碼 (DocId) 資料行。

Key

*

這是來自指定資料表的全文檢索索引鍵值。

如果對應資料表中沒有任何的全文檢索索引鍵,就會傳回空白的資料列集。

* Key 的資料類型與基底資料表中全文檢索索引鍵資料行的資料類型一樣。

權限

這個函數是公用的,而且不需要任何特殊權限。

備註

下表說明使用一個、兩個或三個參數的效果。

此參數清單…

具有此結果…

table_id

僅使用 table_id 參數叫用時,sp_fulltext_keymappings 會從指定的基底資料表傳回所有的全文檢索索引鍵 (Key) 値,以及與每個索引鍵相關聯的 DocId。這包含暫止刪除的索引鍵。

這個函數對於多項問題的疑難排解很有用。當選取的全文檢索索引鍵並非整數資料類型時,此函數特別適合用來查看全文檢索索引內容。此項作業涉及聯結 sp_fulltext_keymappings 與 sys.dm_fts_index_keywords_by_document 的結果。如需詳細資訊,請參閱<sys.dm_fts_index_keywords_by_document (Transact-SQL)>。

不過,一般而言,建議您在可能的情況下,使用指定特定全文檢索索引鍵或 DocId 的參數來執行 sp_fulltext_keymappings。以這種方式作業的效率,要比傳回整個索引鍵對應高得多,特別是在處理大型資料表時,因為在這種情況下,傳回整個索引鍵對應的效能成本可能相當高。

table_id, docid

如果僅指定 table_id 和 docid,則 docid 必須為 nonNULL 且指定所指定資料表中的有效 DocId。此函數非常適合用來隔離基底資料表的自訂全文檢索索引鍵 (對應至特定全文檢索索引的 DocId)。

table_id, NULL, key

如果有三個參數,則第二個參數必須為 NULL,而 key 必須為 nonNULL 且指定所指定資料表中的有效全文檢索索引鍵值。此函數非常適合用來隔離對應至基底資料表的特定自訂全文檢索索引鍵的 DocId。

若有下列任何情況就會傳回錯誤:

  • 指定了無效的 table_id。

  • 資料表未建立全文檢索索引。

  • 可能是 non-null 的參數發現 NULL。

範例

[!附註]

本節中的範例會使用 AdventureWorks2008R2 範例資料庫的 Production.ProductReview 資料表。您可以建立這個索引,建立方式是執行針對<CREATE FULLTEXT INDEX (Transact-SQL)>中的 ProductReview 資料表所提供的範例。

A. 取得所有索引鍵和 DocId 值

下列範例會使用 DECLARE 陳述式來建立區域變數 @table_id,以及指派 ProductReview 資料表的識別碼當做其值。此範例會執行 sp_fulltext_keymappings,以便針對 table_id 參數指定 @table_id。

[!附註]

只搭配 table_id 參數使用 sp_fulltext_keymappings 適用於小型資料表。

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id;
GO

這則範例會從資料表中傳回所有 DocId 和全文檢索索引鍵,如下所示:

docid

key

1

1

1

2

2

2

3

3

3

4

4

4

B. 取得特定索引鍵值的 DocId 值

下列範例會使用 DECLARE 陳述式來建立區域變數 @table_id,以及指派 ProductReview 資料表的識別碼當做其值。此範例會執行 sp_fulltext_keymappings,以便針對 table_id 參數指定 @table_id、針對 docid 參數指定 NULL,並且針對 key 參數指定 4。

[!附註]

只搭配 table_id 參數使用 sp_fulltext_keymappings 適用於小型資料表。

USE AdventureWorks2008R2;
GO
DECLARE @table_id int = OBJECT_ID(N'Production.ProductReview');
EXEC sp_fulltext_keymappings @table_id, NULL, 4;
GO

這則範例會傳回下列結果。

docid

key

4

4

4