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) を指定する必要があります。詳細については、このトピックの「プロパティ値の取得」を参照してください。
property_name
フルテキスト クエリでプロパティを識別するために使用される名前を指定します。 property_name は、プロパティ セット内で一意にプロパティを識別する名前である必要があります。 プロパティ名の内部にはスペースを含めることができます。 property_name の最大長は 256 文字です。 この名前は "作成者" や "ホーム アドレス" などのわかりやすい名前、または、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 操作が失敗しエラーが発生します。つまり、1 つのプロパティに定義できる名前は 1 つだけです。
PROPERTY_DESCRIPTION ='property_description'
プロパティに関するユーザー定義の説明を指定します。 property_description には、最大 512 文字の文字列を指定できます。 このオプションは省略可能です。DROP
list_name で指定した検索プロパティ リストから、指定したプロパティを削除します。 プロパティを削除すると登録が解除されるため、このプロパティは検索できなくなります。
説明
それぞれのフルテキスト インデックスは、検索プロパティ リストを 1 つだけ持つことができます。
特定の検索プロパティのクエリを有効にするには、フルテキスト インデックスの検索プロパティ リストにその検索プロパティを追加した後、インデックスの再作成を行う必要があります。
プロパティを指定する場合は、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
);
注意
この例では、Windows Vista で導入された正規プロパティ名 (Windows の正規名) の概念に似ているプロパティ名 System.Author を使用しています。
プロパティ値の取得
フルテキスト検索では、プロパティ セット 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. プロパティを削除する
次の例では、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)