Share via


ALTER SEARCH PROPERTY LIST (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

將指定的搜尋屬性加入至搜尋屬性清單,或從中卸除它。

Syntax

ALTER SEARCH PROPERTY LIST list_name  
{  
   ADD 'property_name'  
     WITH   
      (   
          PROPERTY_SET_GUID = 'property_set_guid'  
        , PROPERTY_INT_ID = property_int_id  
      [ , PROPERTY_DESCRIPTION = 'property_description' ]  
      )  
 | DROP 'property_name'   
}  
;  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

list_name
這是要改變之屬性清單的名稱。 list_name 是識別碼。

若要檢視現有屬性清單的名稱,請使用 sys.registered_search_property_lists 目錄檢視,如下所示:

SELECT name FROM sys.registered_search_property_lists;  

ADD
將指定的搜尋屬性新增至 list_name 所指定的屬性清單。 此屬性已為搜尋屬性清單註冊。 相關的全文檢索索引必須重新擴展,新加入的屬性才能用於屬性搜尋。 如需詳細資訊,請參閱 ALTER FULLTEXT INDEX (Transact-SQL)

注意

若要將指定的搜尋屬性新增至搜尋屬性清單,您必須提供其屬性集 GUID (property_set_guid) 和屬性 Int 識別碼 (property_int_id)。 如需詳細資訊,請參閱本主題稍後的<取得屬性集 GUID 和識別碼>。

property_name
指定要用以識別全文檢索查詢中之屬性的名稱。 property_name 必須唯一識別屬性集內的屬性。 屬性名稱可以包含內部空格。 property_name 的最大長度為 256 個字元。 這個名稱可以是使用者易記名稱,例如「作者」或「住家地址」;或者它可以是屬性的 Windows 正式名稱,例如 System.AuthorSystem.Contact.HomeAddress

開發人員必須使用您所指定的 property_name 值,來識別 CONTAINS 述詞中的屬性。 因此,在新增屬性時,務必指定有意義的值,表示指定之屬性集 GUID (property_set_guid) 和屬性識別碼 (property_int_id) 所定義的屬性。 如需有關屬性名稱的詳細資訊,請參閱本主題稍後的<備註>。

若要在目前資料庫的搜尋屬性清單中檢視目前存在之屬性的名稱,請使用 sys.registered_search_properties 目錄檢視,如下所示:

SELECT property_name FROM sys.registered_search_properties;  

PROPERTY_SET_GUID ='property_set_guid'
指定屬性所屬之屬性集的識別碼。 這是全域唯一識別碼 (GUID)。 如需有關取得此值的詳細資訊,請參閱本主題稍後的<備註>。

若要在目前資料庫的搜尋屬性清單中檢視任何存在之屬性的屬性集 GUID,請使用 sys.registered_search_properties 目錄檢視,如下所示:

SELECT property_set_guid FROM sys.registered_search_properties;  

PROPERTY_INT_ID =property_int_id
指定屬性集內識別屬性的整數。 如需有關取得此值的詳細資訊,請參閱<備註>。

若要在目前資料庫的搜尋屬性清單中檢視任何存在之屬性的整數識別碼,請使用 sys.registered_search_properties 目錄檢視,如下所示:

SELECT property_int_id FROM sys.registered_search_properties;  

注意

property_set_guidproperty_int_id 的指定組合在搜尋屬性清單中必須是唯一的。 如果您嘗試加入現有的組合,ALTER SEARCH PROPERTY LIST 作業就會失敗並發出錯誤。 這表示您只能定義給定屬性的一個名稱。

PROPERTY_DESCRIPTION ='property_description'
指定使用者定義的屬性描述。 property_description 是最多 512 個字元的字串。 此選項是選擇性的。

DROP
list_name 所指定的屬性清單中卸除指定屬性。 卸除屬性會取消註冊屬性,所以它不再是可搜尋的。

備註

每個全文檢索索引只能有一個搜尋屬性清單。

若要在指定的搜尋屬性上啟用查詢,您必須將它加入至全文檢索索引的搜尋屬性清單,然後再重新擴展索引。

當指定屬性時,您可以用括號括住的逗點分隔清單,依任何順序排列 PROPERTY_SET_GUID、PROPERTY_INT_ID 和 PROPERTY_DESCRIPTION 子句,例如:

ALTER SEARCH PROPERTY LIST CVitaProperties  
ADD 'System.Author'   
WITH (   
      PROPERTY_DESCRIPTION = 'Author or authors of a given document.',  
      PROPERTY_SET_GUID   = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9',   
      PROPERTY_INT_ID = 4   
      );  

注意

這個範例使用屬性名稱 System.Author,類似 Windows Vista 中導入的標準屬性名稱 (Windows 標準名稱) 的概念。

取得屬性值

全文檢索搜尋藉由使用屬性集 GUID 和屬性整數識別碼,將搜尋屬性對應至全文檢索索引。 如需如何取得 Microsoft 所定義之屬性的資訊,請參閱尋找搜尋屬性的屬性集 GUID 與屬性整數識別碼。 如需有關獨立軟體廠商 (ISV) 所定義之屬性的詳細資訊,請參閱該廠商的文件集。

讓加入的屬性成為可搜尋的

若將搜尋屬性加入至搜尋屬性清單,會註冊屬性。 最近新增的屬性可立即在 CONTAINS 查詢中指定。 但是,直到相關的全文檢索索引重新擴展之後,新加入之屬性的屬性範圍全文檢索查詢才會傳回文件。 例如,直到與目標資料表 (table_name) 建立關聯的全文檢索索引重新擴展之後,最近新增之屬性 new_search_property 的下列屬性範圍全文檢索查詢才會傳回任何文件:

SELECT column_name  
FROM table_name  
WHERE CONTAINS( PROPERTY( column_name, 'new_search_property' ), 
               'contains_search_condition');  
GO   

若要啟動完整母體擴展,請使用下列 ALTER FULLTEXT INDEX (Transact-SQL) 陳述式:

USE database_name;  
GO  
ALTER FULLTEXT INDEX ON table_name START FULL POPULATION;  
GO  

注意

從屬性清單卸除屬性之後不需要重新母體擴展,因為只有留在搜尋屬性清單中的屬性可用於全文檢索查詢。

若要建立屬性清單

卸除屬性清單

若要在全文檢索索引上新增或移除屬性清單

若要執行全文檢索索引的母體擴展

權限

需要屬性清單的 CONTROL 權限。

範例

A. 加入屬性

下列範例會將數個屬性 (TitleAuthorTags) 加入至名為 DocumentPropertyList 的屬性清單。

注意

如需建立 DocumentPropertyList 屬性清單的範例,請參閱 CREATE SEARCH PROPERTY LIST (Transact-SQL)

ALTER SEARCH PROPERTY LIST DocumentPropertyList  
   ADD 'Title'   
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,   
      PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );  
  
ALTER SEARCH PROPERTY LIST DocumentPropertyList   
    ADD 'Author'  
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 4,   
      PROPERTY_DESCRIPTION = 'System.Author - Author or authors of the item.' );  
  
ALTER SEARCH PROPERTY LIST DocumentPropertyList   
    ADD 'Tags'  
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 5,   
      PROPERTY_DESCRIPTION = 
          'System.Keywords - Set of keywords (also known as tags) assigned to the item.' );  

注意

您必須將指定的搜尋屬性清單與全文檢索索引產生關聯,才能將它用於屬性範圍查詢。 若要執行這項操作,請使用 ALTER FULLTEXT INDEX 陳述式,並指定 SET SEARCH PROPERTY LIST 子句。

B. 卸除屬性

下列範例會從 Comments 屬性清單卸除 DocumentPropertyList 屬性。

ALTER SEARCH PROPERTY LIST DocumentPropertyList  
DROP 'Comments' ;  

另請參閱

CREATE SEARCH PROPERTY LIST (Transact-SQL)
DROP SEARCH PROPERTY LIST (Transact-SQL)
sys.registered_search_properties (Transact-SQL)
sys.registered_search_property_lists (Transact-SQL)
sys.dm_fts_index_keywords_by_property (Transact-SQL)
使用搜索屬性清單搜索文件屬性
尋找搜尋屬性的屬性集 GUID 與屬性整數識別碼