檢視和變更 Full-Text 索引的屬性
在 Management Studio 中檢視或變更全文檢索索引的屬性
在 [物件總管] 中,展開伺服器。
展開 資料庫,然後展開包含全文字索引的資料庫。
展開 資料表。
以滑鼠右鍵按一下已定義全文檢索索引的資料表、選取 [全文檢索索引],然後按一下 [全文檢索索引] 內容功能表上的 [屬性]。 這樣就會開啟 [全文檢索索引屬性] 對話方塊。
在 [選取頁面] 窗格中,您可以選取下列任何頁面:
頁面 說明 一般 顯示全文檢索索引的基本屬性。 其中包括數個可修改的屬性,以及一些不可變更的屬性,例如資料庫名稱、數據表名稱,以及全文檢索索引鍵數據行的名稱。 可修改的屬性包括:
全文檢索索引停用詞表
全文檢索索引已啟用
變更追蹤
搜尋屬性清單
如需詳細資訊,請參閱 Full-Text 索引屬性 (一般頁面) 。欄位 顯示可用於全文檢索索引的資料表資料行。 系統會針對選取的資料行建立全文檢索索引。 您可以選取任意數目的可用資料行,以便包含在全文檢索索引中。 如需詳細資訊,請參閱 Full-Text 索引屬性 (資料行頁面) 。 排程 您可以使用這個頁面來建立或管理 SQL Server Agent 作業的排程,以便針對全文檢索索引集合啟動增量資料表填充。 如需詳細資訊,請參閱 建立全文索引。
**重要** 結束 [Full-Text 索引屬性 ] 對話框之後,任何新建立的排程會與 SQL Server Agent 作業相關聯( database_name上啟動累加數據表擴展。table_name)。按一下 [確定] 以儲存任何變更並結束 [全文檢索索引屬性] 對話框。
檢視索引數據表和數據行的屬性
您可以使用許多 Transact-SQL 函式 (例如 OBJECTPROPERTYEX) 以取得各種全文檢索索引屬性的值。 此資訊對於管理及疑難排解全文檢索有助益。
下表列出與索引資料表和資料行相關的全文檢索屬性,及其相關的 Transact-SQL 函式。
| 房產 | 說明 | 功能 |
|---|---|---|
FullTextTypeColumn |
在資料表中,用來保存資料行文件類型資訊的 TYPE COLUMN。 | COLUMNPROPERTY |
IsFulltextIndexed |
欄是否已啟用全文檢索。 | 欄位屬性 |
IsFulltextKey |
索引是否為資料表的全文索引鍵。 | INDEXPROPERTY |
| 表格全文背景更新索引開啟 | 資料表是否具有背景更新的全文檢索索引。 | OBJECTPROPERTYEX |
TableFulltextCatalogId |
資料表的全文索引資料所位於的全文目錄識別碼。 | OBJECTPROPERTYEX |
TableFulltextChangeTrackingOn |
資料表是否已啟用全文變更追蹤功能。 | OBJECTPROPERTYEX |
TableFulltextDocsProcessed |
全文檢索索引啟動之後所處理的資料列數。 | OBJECTPROPERTYEX |
| TableFulltextFailCount | 搜尋 Full-Text 的數據列數目未編製索引。 | OBJECTPROPERTYEX |
| TableFulltextItemCount | 已成功全文檢索索引的資料列數。 | OBJECTPROPERTYEX |
TableFulltextKeyColumn |
全文檢索唯一索引鍵資料行的資料行識別碼。 | OBJECTPROPERTYEX |
TableFullTextMergeStatus |
具有全文檢索索引的資料表目前是否正在合併。 | OBJECTPROPERTYEX |
| TableFulltextPendingChanges | 待處理的變更追蹤項目數量。 | OBJECTPROPERTYEX |
TableFulltextPopulateStatus |
全文表格的母體狀態描述。 | OBJECTPROPERTYEX |
TableHasActiveFulltextIndex |
資料表是否有一個啟用的全文檢索索引。 | OBJECTPROPERTYEX |
取得 Full-Text 主鍵列的相關資訊
一般而言,CONTAINSTABLE 或 FREETEXTTABLE 資料列集值函數的結果必須與基底資料表聯結。 在這種情況下,您必須知道主鍵資料行名稱。 您可以查詢給定的唯一索引是否用作全文鍵,並取得全文鍵資料行的識別符號。
查詢指定的唯一索引是否用作全文索引鍵
使用 SELECT 陳述式來呼叫 INDEXPROPERTY 函數。 在函數調用中使用 OBJECT_ID 函式,將數據表的名稱 (table_name) 轉換成數據表標識碼、指定數據表的唯一索引名稱,並指定
IsFulltextKey索引屬性,如下所示:SELECT INDEXPROPERTY( OBJECT_ID('table_name'), 'index_name', 'IsFulltextKey' );如果索引用來強制全文索引鍵數據行的唯一性,則這個語句會傳回 1;如果不是,則傳回 0。
範例
下列範例會查詢是否使用 PK_Document_DocumentID 索引來強化全文檢索鍵資料行的唯一性,如下所示:
USE AdventureWorks
GO
SELECT INDEXPROPERTY ( OBJECT_ID('Production.Document'), 'PK_Document_DocumentID', 'IsFulltextKey' )
如果 PK_Document_DocumentID 索引是用來強制全文鍵資料行的唯一性,這個範例就會傳回 1。 否則,它會傳回 0 或 NULL。 NULL 表示您使用的是無效的索引名稱、索引名稱未對應至數據表、數據表不存在等等。
尋找全文檢索關鍵欄位的標識碼
每個啟用全文檢索的數據表都有一個用來確保表中行唯一性的資料欄(unique**key 資料欄)。
TableFulltextKeyColumn屬性是從 OBJECTPROPERTYEX 函式取得的,包含唯一鍵數據行的數據行標識碼。若要取得這個識別碼,您可以使用 SELECT 陳述式來呼叫 OBJECTPROPERTYEX 函數。 使用 OBJECT_ID 函式,將數據表的名稱 (table_name) 轉換成數據表識別元,並指定
TableFulltextKeyColumn屬性,如下所示:SELECT OBJECTPROPERTYEX(OBJECT_ID( 'table_name'), 'TableFulltextKeyColumn' ) AS 'Column Identifier';
範例
下列範例會傳回全文索引鍵欄位的標識或 NULL。 NULL 表示您使用無效的索引名稱、索引名稱未對應至數據表、數據表不存在等等。
USE AdventureWorks;
GO
SELECT OBJECTPROPERTYEX(OBJECT_ID('Production.Document'), 'TableFulltextKeyColumn');
GO
下列範例顯示如何使用唯一鍵資料行的標識符,以取得資料行的名稱。
USE AdventureWorks;
GO
DECLARE @key_column sysname
SET @key_column = Col_Name(Object_Id('Production.Document'),
ObjectProperty(Object_id('Production.Document'),
'TableFulltextKeyColumn')
)
SELECT @key_column AS 'Unique Key Column';
GO
這個範例會傳回名為 Unique Key Column的結果集數據行,其會顯示包含 Document 數據表 DocumentID 唯一索引鍵數據行名稱的單一數據列。 請注意,如果此查詢包含無效的索引名稱,則索引名稱未對應至數據表、數據表不存在等等,則會傳回 NULL。
停用或重新啟用 Full-Text 索引的數據表
在 SQL Server 中,所有使用者建立的資料庫預設都會啟用全文檢索。 此外,個別資料表也會在建立全文檢索索引並將資料行加入索引中後,立即自動啟用全文檢索索引。 從全文檢索索引中卸除最後一個資料行之後,資料表便會自動停用全文檢索索引。
在具有全文檢索索引的資料表上,您可以使用 SQL Server Management Studio,手動為資料表停用或重新啟用全文檢索索引。
啟用數據表進行全文索引
展開伺服器群組,展開 [資料庫],然後展開包含您想要為其啟用全文索引的資料表所在的資料庫。
展開 [資料表] ,然後以滑鼠右鍵按一下您想要停用或重新啟用全文檢索索引的資料表。
選取 [Full-Text 索引],然後按兩下 [ 停用 Full-Text 索引 ] 或 [ 啟用 Full-Text 索引]。
從資料表移除 Full-Text 索引
從表中移除全文索引
在 [物件總管] 中,以滑鼠右鍵按一下含有您要刪除其全文檢索索引的資料表。
選取 <刪除全文檢索索引>。
出現提示時,按兩下 [ 確定 ] 以確認您想要刪除全文檢索索引。