ALTER SEARCH PROPERTY LIST (Transact-SQL)

将指定的搜索属性添加到指定的搜索属性列表中或从列表中删除该属性。

适用范围:SQL Server(SQL Server 2012 到当前版本)。

语法

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' 
}
;

参数

  • 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) 和属性整数 ID (property_int_id)。有关详细信息,请参阅本主题后面的“获取属性集 GUIDS 和标识符”。

  • property_name
    指定要用来标识全文查询中的属性的名称。 property_name 必须唯一地标识属性集中的属性。 属性名称可以包含内部空格。 property_name 的最大长度为 256 个字符。 此名称可以是 Author 或 Home Address 等用户友好名称,也可以是属性的 Windows 规范名称,如 System.Author 或 System.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_guid 和 property_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 和属性整数 ID 将其映射为全文检索。 有关如何为 Microsoft 定义的属性获取这些值的信息,请参阅查找搜索属性的属性集 GUID 和属性整数 ID。 有关由独立软件供应商 (ISV) 定义的属性的信息,请参阅该供应商提供的文档。

使已添加的属性可搜索

将搜索属性添加到搜索属性列表中会注册该属性。 可在 CONTAINS 查询中立即指定新添加的属性。 但是,对新添加的属性进行的属性范围的全文查询将不返回文档,直到重新填充关联的全文检索为止。 例如,对新添加的属性 new_search_property 执行的属性范围的查询将不返回任何文档,直到重新填充与目标表 (table_name) 关联的全文检索为止:

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.添加属性

下面的示例将多个属性(Title、Author 和 Tags)添加到名为 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.删除属性

以下示例从 DocumentPropertyList 属性列表中删除 Comments 属性。

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 和属性整数 ID