検索プロパティ リストを使用したドキュメント プロパティの検索Search Document Properties with Search Property Lists

適用対象: ○SQL Server ○Azure SQL Database XAzure Synapse Analytics (SQL DW) XParallel Data Warehouse APPLIES TO: YesSQL Server YesAzure SQL Database NoAzure Synapse Analytics (SQL DW) NoParallel Data Warehouse

以前のバージョンでは、ドキュメント プロパティの内容はドキュメントの本文の内容と区別できませんでした。The content of document properties was previously indistinguishable from the content of the document body. この制限により、フルテキスト クエリは、ドキュメント全体に対する汎用検索に制限されていました。This limitation restricted full-text queries to generic searches on whole documents. しかし、現在のバージョンでは、 varbinaryvarbinary(max) ( FILESTREAMを含む)、または image バイナリ データ列がサポートされているドキュメントの種類については、フルテキスト インデックスを構成することで、Author や Title などの特定のプロパティに対するプロパティ スコープの検索をサポートすることができます。Now, however, you can configure a full-text index to support property-scoped searching on particular properties, such as Author and Title, for supported document types in a varbinary, varbinary(max) (including FILESTREAM), or image binary data column. この形式の検索を、 プロパティ検索と呼びます。This form of searching is known as property searching.

特定の種類のドキュメントでプロパティ検索が可能かどうかは、対応する フィルター (IFilter) によって異なります。The associated filter (IFilter) determines whether property searching is possible on a specific type of document. ドキュメントの種類によっては、ドキュメント本文の内容に加えて、そのドキュメントの種類に対して定義されている検索プロパティの一部またはすべてが、対応する IFilter によって抽出されます。For some document types, the associated IFilter extracts some or all of the properties defined for that type of document, as well as the content of the document body. フルテキスト インデックスの作成時に IFilter によって抽出されたプロパティに対してのみプロパティ検索をサポートするように、フルテキスト インデックスを構成することができます。You can configure a full-text index to support property searching only on properties that are extracted by an IFilter during full-text indexing. さまざまなドキュメント プロパティを抽出する IFilter の一例として、Microsoft Office のドキュメントの種類 (.docx、.xlsx、.pptx など) に対応した IFilter があります。Among IFilters that extract a number of document properties are the IFilters for Microsoft Office document types (such as .docx, .xlsx, and .pptx). 一方、XML IFilter では、プロパティは生成されません。On the other hand, the XML IFilter does not emit properties.

検索プロパティのフルテキスト検索How Full-Text Search Works with Search Properties

内部プロパティ IDInternal Property IDs

Full-Text Engine は、登録されている各プロパティに対して内部プロパティ ID を適宜割り当てます。この内部プロパティ ID は、特定の検索リスト内のプロパティを一意に識別するためのもので、検索プロパティ リストで固有の ID になります。The Full-Text Engine arbitrarily assigns each registered property an internal property ID, which uniquely identifies the property in that particular search list and which is specific to that search property list. また、1 つのプロパティを複数の検索プロパティ リストに追加した場合、その内部 ID がリスト間で異なる可能性があります。Therefore, if a property is added to multiple search property lists, its internal property ID is likely to differ between different lists.

プロパティを検索リストに追加したときに、Full-Text Engine によって 内部プロパティ ID がプロパティに適宜割り当てられます。When a property is registered for a search list, the Full-Text Engine arbitrarily assigns an internal property ID to the property. この内部プロパティ ID は、該当する検索プロパティ リスト内のプロパティを一意に識別する整数です。The internal property ID is an integer that uniquely identifies the property in that search property list.

次の図は、Title と Keywords の 2 つのプロパティを指定する検索プロパティ リストの論理的なビューを示しています。The following illustration shows a logical view of a search property list that specifies two properties, Title and Keywords. Keywords のプロパティ リスト名は "Tags" です。The property-list name for Keywords is "Tags." これらのプロパティは、F29F85E0-4FF9-1068-AB91-08002B27B3D9 という GUID を持つ同じプロパティ セットに属します。These properties belong to the same property set, whose GUID is F29F85E0-4FF9-1068-AB91-08002B27B3D9. Title のプロパティ整数識別子は 2、Tags (Keywords) のプロパティ整数識別子は 5 です。The property integer identifiers are 2 for Title and 5 for Tags (Keywords). Full-Text Engine は、各プロパティを、検索プロパティ リストで一意となる内部プロパティ ID に適宜関連付けます。The Full-Text Engine arbitrarily maps each property to an internal property ID that is unique to the search property list. Title プロパティの内部プロパティ ID は 1、Tags プロパティの内部プロパティ ID は 2 になります。The internal property ID for the Title property is 1, and the internal property ID for the Tags property is 2.

検索プロパティ リストを内部テーブルにマッピングするMapping of search property list to internal table

内部プロパティ ID は、プロパティのプロパティ整数識別子とは異なる場合があります。The internal property ID is likely to be different from the property integer identifier of the property. 特定のプロパティを複数の検索プロパティ リストに登録した場合、検索プロパティ リストごとに異なる内部プロパティ ID が割り当てられる可能性があります。If a given property is registered for multiple search property lists, a different internal property ID might be assigned for each search property list. たとえば、ある検索プロパティ リストでは内部プロパティ ID が 4 である一方で、別の検索プロパティ リストでは内部プロパティ ID が 1 であったり 3 であったりする場合があります。For example, the internal property ID might be 4 in one search property list, 1 in another, 3 in another, and so on. これに対し、プロパティ整数識別子はプロパティに固有な識別子であるため、プロパティがどこで使用されるかに関係なく同じ値になります。In contrast, the property integer identifier is intrinsic to the property, and it remains the same wherever the property is used.

登録済みのプロパティのインデックスの作成Indexing of Registered Properties

フルテキスト インデックスが検索プロパティ リストに関連付けらた後で、プロパティに固有の検索語句のインデックスを作成するために、インデックスを再作成する必要があります。After a full-text index is associated with a search property list, the index must be repopulated to index property-specific search terms. フルテキスト インデックスの作成中、すべてのプロパティの内容が他の内容と共にフルテキスト インデックスに格納されます。During full-text indexing, the contents of all properties are stored in the full-text index along with other content. 登録されたプロパティに含まれている検索語句のインデックスを作成しているときには、フルテキスト インデクサーによって、対応する内部プロパティ ID も語句と共に格納されます。However, when indexing a search term found in a registered property, the full-text indexer also stores the corresponding internal property ID with the term. 一方、プロパティが登録されていない場合、プロパティはドキュメントの本文の一部であるかのようにフルテキスト インデックスに格納され、内部プロパティ ID として値 0 が割り当てられます。In contrast, if a property is not registered, it is stored in the full-text index as if it were part of the document body, and it has a value of zero for the internal property ID.

次の図に、フルテキスト インデックスに示された検索語句の論理ビューを示します。このフルテキスト インデックスは、前の図に示した検索プロパティ リストに関連付けられています。The following illustration shows a logical view of how search terms appear in a full-text index that is associated with the search property list shown in the preceding illustration. サンプル ドキュメント Document 1 には、ドキュメントの本文に加えて、Title、Author、および Keywords の 3 つのプロパティが含まれています。A sample document, Document 1 contains three properties-Title, Author, and Keywords-as well as the document body. 検索プロパティ リストに指定されている Title と Keywords のプロパティの場合、検索語句がフルテキスト インデックスの対応する内部プロパティ ID に関連付けられています。For the properties Title and Keywords, which are specified in the search property list, search terms are associated with their corresponding internal property IDs in the full-text index. これに対し、Author プロパティの内容については、ドキュメントの本文の一部であるかのようにインデックスが作成されます。In contrast, the content of the Author property is indexed as if it were part of the document body. これは、プロパティを登録することにより、プロパティに格納されている内容の量に応じてフルテキスト インデックスのサイズが増加することを示しています。This means registering a property increases the size of the full-text index somewhat, depending on the amount of content stored in the property.

検索プロパティ リストを使用するフルテキスト インデックスFull-text index that uses a search property list

Title プロパティの検索語句 ("Favorite"、"Biking"、および "Trails") は、このインデックスの Title に割り当てられた内部プロパティ ID 値 1 に関連付けられます。Search terms in the Title property-"Favorite," "Biking," and "Trails"-are associated with the internal property ID assigned to Title for this index, 1. Keywords プロパティの検索語句 ("biking" および "mountain") は、このインデックスの Tags に割り当てられた内部プロパティ ID 値 2 に関連付けられます。Search terms in the Keywords property-"biking" and "mountain"-are associated with the internal property ID assigned to Tags for this index, 2. Author プロパティの検索語句 ("Jane" および "Doe") およびドキュメントの本文の検索語句の内部プロパティ ID は 0 です。For search terms n the Author property-"Jane" and "Doe"-and search terms in the document body, the internal property ID is 0. ここで、"biking" という語句は、Title プロパティ、Keywords (Tags) プロパティ、およびドキュメントの本文に出現します。The term "biking" occurs in the Title property, in the Keywords (Tags) property, and in the document body. Title プロパティまたは Keywords (Tags) プロパティに対して "biking" をプロパティ検索すると、このドキュメントが結果として返されます。A property search for "biking" in the Title or Keywords (Tags) property would return this document in the results. "biking" の汎用フルテキスト クエリを実行した場合も、プロパティ検索用にインデックスが構成されていないかのように、このドキュメントが返されます。A generic full-text query for "biking" would also return this document, as if the index were not configured for property searching. Author プロパティに対して "biking" のプロパティ検索を実行した場合、このドキュメントは返されません。A property search for "biking" in the Author property would not return this document.

プロパティスコープのフルテキスト クエリでは、フルテキスト インデックスの現在の検索プロパティ リストに登録されている内部プロパティ ID が使用されます。A property-scoped full-text query uses the internal property IDs registered for the current search property list of the full-text index.

プロパティ検索を有効にした場合の影響Impact of Enabling Property Searching

1 つまたは複数のプロパティを対象とした検索をサポートするようにフルテキスト インデックスを構成すると、検索プロパティ リストに指定したプロパティの数および各プロパティの内容に応じて、インデックスのサイズが増加します。Configuring a full-text index to support searching on one or more properties increases the size of the index somewhat, depending on the number of properties you specify in your search property list and on the content of each property.

マイクロソフトでは、Microsoft Word、Excel、PowerPoint の一般的なドキュメント コーパスのテストにおいて、フルテキスト インデックスを構成して、一般的な検索プロパティのインデックスを作成しました。In testing typical corpuses of Microsoft Word, Excel, and PowerPoint documents, we configured a full-text index to index typical search properties. これらのプロパティのインデックスを作成した結果、フルテキスト インデックスのサイズは約 5% 増加しました。Indexing these properties increased the size of the full-text index size by approximately 5 percent. サイズの増加に関するこの概算値は、ほとんどのドキュメント コーパスに当てはまると考えられます。We anticipate that this approximate size increase will to be typical for most document corpuses. ただし、最終的には、サイズの増加量は、全体的なデータ量に関連する特定のドキュメント コーパス内のプロパティ データの量に依存します。However, ultimately, the size increase will depend on the amount of property data in a given document corpus relative to the amount of overall data.

検索プロパティ リストの作成Creating a Search Property List

Transact-SQL を使用して検索プロパティ リストを作成するにはTo create a search property list with Transact-SQL

少なくともリストの名前を指定して、CREATE SEARCH PROPERTY LIST (Transact-SQL) ステートメントを使用します。Use the CREATE SEARCH PROPERTY LIST (Transact-SQL) statement and provide at least a name the list.

Management Studio で検索プロパティ リストを作成するにはTo create a search property list in Management Studio
  1. オブジェクト エクスプローラーで、サーバーを展開します。In Object Explorer, expand the server.

  2. [データベース] を展開し、検索プロパティ リストを作成する対象のデータベースを展開します。Expand Databases, and then expand the database in which you want to create the search property list.

  3. [ストレージ] を展開し、 [検索プロパティ リスト] を右クリックします。Expand Storage, and then right-click Search Property Lists.

  4. [新しい検索プロパティ リスト] をクリックします。Select New Search Property List.

  5. プロパティ リストの名前を指定します。Specify the property list name.

  6. 必要に応じて、他のユーザーをプロパティ リストの所有者として指定します。Optionally, specify someone else as the property list owner.

  7. 以下のオプションの 1 つを選択します。Select one of the following options:

    • [空の検索プロパティ リストを作成する]Create an empty search property list

    • [既存の検索プロパティ リストから作成する]Create from an existing search property list

    詳細については、「 New Search Property List」を参照してください。For more information, see New Search Property List.

  8. [OK] をクリックします。Click OK.

検索プロパティ リストへのプロパティの追加Adding Properties to a Search Property List

プロパティを検索するには、 検索プロパティ リスト を作成し、検索可能にする 1 つまたは複数のプロパティを指定する必要があります。Property searching requires creating a search property list and specifying one or more properties that you want to make searchable. プロパティを検索プロパティ リストに追加すると、プロパティはその特定のリスト用に登録されます。When you add a property to a search property list, the property is registered for that particular list. プロパティを検索プロパティ リストに追加するには、次の値が必要です。To add a property to a search property list you need the following values:

  • プロパティ セット GUIDProperty set GUID

    それぞれの検索プロパティは、関連するプロパティのグループを含む単一のプロパティ セットに属します。Each search property belongs to single property set that contains a group of related properties. それぞれのプロパティ セットは、グローバル一意識別子 (GUID) によって識別されます。Each property set is identified by a globally unique identifier (GUID).

  • プロパティ整数識別子Property integer identifier

    それぞれの検索プロパティは、プロパティ セット内で一意な識別子を持っています。Each search property possesses an identifier that is unique within the property set. 特定のプロパティでは、識別子が整数または文字列である場合があります。ただし、フルテキスト検索では、整数識別子のみがサポートされます。For a given property, the identifier could be either an integer or a string, however full-text search supports only integer identifiers.

  • プロパティ名Property name

    これは、プロパティを検索するフルテキスト クエリでユーザーが指定する名前です。This is the name that users will specify in full-text queries to search on the property. プロパティ名の内部にはスペースを含めることができます。A property name can contain internal spaces. 最大長は 256 文字です。The maximum length is 256 characters.

    プロパティ名として、次のいずれかを指定できます。The property name can be any of the following:

    • System.AuthorSystem.Contact.HomeAddressなど、プロパティの Windows の正規名。The Windows canonical name of the property, such as System.Author or System.Contact.HomeAddress.

    • ユーザーにとって覚えやすくわかりやすい名前。A user-friendly name that is easy for your users to remember. いくつかのプロパティは "Author" や "Home Address" などの一般的なわかりやすい名前に関連付けられていますが、ユーザーにとって最も適した任意の名前を指定できます。Some properties are associated with a well-known user-friendly name, such as "Author" or "Home Address," but you can specify whatever name is most appropriate to your users.

    注意

    プロパティ セット GUID とプロパティ識別子の特定の組み合わせは、特定の検索プロパティ リスト内で一意である必要があります。A given combination of property set GUID and property identifier must be unique in a given search property list. これは、同じプロパティを別の名前または説明を使用して複数回追加できないことを意味します。This means that you cannot add the same property more than once with different names or descriptions.

  • プロパティの説明 (省略可能)Property description (optional)

    検索プロパティを検索プロパティ リストに追加するとき、オプションで説明を記述できます。When adding a search property to a search property list, you can supply an optional description. たとえば、名前からはその内容がわかりにくいプロパティに関する情報を記述したり、プロパティのプロパティ セットに関する説明を記述したりできます。For example, you might want to provide information about a property that is not evident from its name, or you might want to describe the property set of the property.

検索プロパティ リストの値を取得するにはTo obtain values for a search property list

検索プロパティのプロパティ セット GUID およびプロパティ整数 ID の取得」を参照してください。See Find Property Set GUIDs and Property Integer IDs for Search Properties.

Transact-SQL を使用してプロパティを検索プロパティ リストに追加するにはTo add a property to a search property list with Transact-SQL

ALTER SEARCH PROPERTY LIST (Transact-SQL) ステートメントを、「検索プロパティのプロパティ セット GUID およびプロパティ整数 ID の取得」で説明されているいずれかの方法を使って取得した値と共に使います。Use the ALTER SEARCH PROPERTY LIST (Transact-SQL) statement with the values that you obtained by using one of the methods described in the article, Find Property Set GUIDs and Property Integer IDs for Search Properties.

次の例では、これらの値を使用してプロパティを検索プロパティ リストに追加する方法を示しています。The following example demonstrates the use of these values when adding a property to a search property list:

ALTER SEARCH PROPERTY LIST DocumentTablePropertyList  
   ADD 'Title'  
   WITH ( PROPERTY_SET_GUID = 'F29F85E0-4FF9-1068-AB91-08002B27B3D9', PROPERTY_INT_ID = 2,   
      PROPERTY_DESCRIPTION = 'System.Title - Title of the item.' );  

Management Studio でプロパティを検索プロパティ リストに追加するにはTo add a property to a search property list in Management Studio

[検索プロパティ リストのプロパティ] ダイアログ ボックスを使用して、検索プロパティを追加および削除します。Use the Search Property List Properties dialog box to add and remove search properties. オブジェクト エクスプローラーでは、関連するデータベースの [ストレージ] ノードの下に [検索プロパティ リスト] があります。You can find Search Property Lists in Object Explorer under the Storage node of the associated database.

検索プロパティ リストとフルテキスト インデックスの関連付けAssociating a Search Property List with a Full-Text Index

検索プロパティ リストに登録されているプロパティを対象としたプロパティ検索をフルテキスト インデックスでサポートするためには、検索プロパティ リストとインデックスを関連付けた後、インデックスを再作成する必要があります。For a full-text index to support property searching on the properties that are registered for a search property list, you need to associate the search property list with the index and repopulate the index. フルテキスト インデックスを再作成すると、登録された各プロパティに含まれている検索語句に対して、プロパティ固有のインデックス エントリが作成されます。Repopulating the full-text index creates property-specific index entries for search terms in each of the registered properties.

フルテキスト インデックスがこの検索プロパティ リストに関連付けられている限り、フルテキスト クエリで CONTAINS 述語の PROPERTY オプションを使用して、検索プロパティ リストに登録されているプロパティを対象に検索を実行できます。As long as the full-text index remains associated with this search property list, full-text query can use the PROPERTY option of the CONTAINS predicate to search on properties that are registered for that search property list.

フルテキスト インデックスに関連付けられている検索プロパティ リストを変更した場合は、インデックスを一貫性のある状態に保つために、インデックスの再構築が必要になります。If you change the search property list associated with a full-text index, then the index must be rebuilt to bring it into a consistent state. インデックスは即座に切り捨てられ、完全作成が実行されるまで空になります。The index is truncated immediately and is empty until the full population runs. 検索プロパティ リストの変更によってインデックスが再構築される場合の詳細については、「ALTER FULLTEXT INDEX (Transact-SQL)」の「解説」を参照してください。For more information about when changing the search property list causes rebuilding the index, see "Remarks," in ALTER FULLTEXT INDEX (Transact-SQL).

Transact-SQL を使用して検索プロパティ リストをフルテキスト インデックスに関連付けるにはTo associate a search property list with a full-text index with Transact-SQL

ALTER FULLTEXT INDEX (Transact-SQL) ステートメントを SET SEARCH PROPERTY LIST = <property_list_name> 句と共に使用します。Use the ALTER FULLTEXT INDEX (Transact-SQL) statement with the SET SEARCH PROPERTY LIST = <property_list_name> clause.

Management Studio を使用して検索プロパティ リストをフルテキスト インデックスに関連付けるにはTo associate a search property list with a full-text index with Management Studio

[フルテキスト インデックスのプロパティ] ダイアログ ボックスの [全般] ページで、 [検索プロパティ リスト] の値を指定します。Specify a value for Search Property List on the General page of the Full-Text Index Properties dialog box.

CONTAINS を使用した検索プロパティのクエリQuerying Search Properties with CONTAINS

プロパティ スコープのフルテキスト クエリのための CONTAINS の基本的な構文を次に示します。The basic CONTAINS syntax for a property-scoped full-text query is as follows:

SELECT column_name FROM table_name  
  WHERE CONTAINS ( PROPERTY ( column_name, 'property_name' ), '<contains_search_condition>' )  

たとえば、次のクエリは、 Titleデータベースの Document テーブルの Production.Document 列内で、インデックス化されたプロパティ AdventureWorks に対する検索を実行します。For example, the following query searches on an indexed property, Title, in the Document column of the Production.Document table of the AdventureWorks database. このクエリは、 Title という文字列が Maintenance プロパティに含まれているドキュメントのみを返します。 RepairThe query returns only documents whose Title property contains the string Maintenance or Repair

USE AdventureWorks  
GO  
SELECT Document FROM Production.Document  
  WHERE CONTAINS ( PROPERTY ( Document, 'Title' ), 'Maintenance OR Repair')  
GO  

この例では、ドキュメントの IFilter で Title プロパティが抽出されること、Title プロパティが検索プロパティ リストに追加されること、および検索プロパティ リストがフルテキスト インデックスに関連付けられていることを前提としています。This example assumes that the IFilter for the document extracts its Title property, that the Title property is added to the search property list, and that the search property list is associated with the full-text index.

検索プロパティ リストの管理Managing Search Property Lists

検索プロパティ リストの表示および変更Viewing and Changing a Search Property List

Transact-SQL を使用して検索プロパティ リストを変更するにはTo change a search property list with Transact-SQL

ALTER SEARCH PROPERTY LIST (Transact-SQL) ステートメントを使用して、検索プロパティを追加または削除します。Use the ALTER SEARCH PROPERTY LIST (Transact-SQL) statement to add or remove search properties.

Management Studio で検索プロパティ リストを表示および変更するにはTo view and change a search property list in Management Studio
  1. オブジェクト エクスプローラーで、サーバーを展開します。In Object Explorer, expand the server.

  2. [データベース] を展開し、データベースを展開します。Expand Databases, and then expand the database.

  3. [ストレージ] を展開します。Expand Storage.

  4. [検索プロパティ リスト] を展開して、検索プロパティ リストを表示します。Expand Search Property Lists to display the search property lists.

  5. プロパティ リストを右クリックし、 [プロパティ] をクリックします。Right-click the property list, and select Properties.

  6. [検索プロパティ リスト エディター] ダイアログ ボックスで、プロパティ グリッドを使用して、検索プロパティを追加または削除します。In the Search Property List Editor dialog box, use the Properties grid to add or remove search properties:

    1. ドキュメント プロパティを削除するには、プロパティの左側にある行ヘッダーをクリックして、Del キーを押します。To remove a document property, click the row header to the left of the property, and press DEL.

    2. ドキュメント プロパティを追加するには、リストの末尾で * の右側の空白行をクリックして、新しいプロパティの値を入力します。To add a document property, click in the empty row at the bottom of the list, to the right of the *, and enter the values for the new property.

      これらの値の詳細については、「 検索プロパティ リスト エディター」を参照してください。For information about these values, see Search Property List Editor. Microsoft によって定義されているプロパティのこれらの値を取得する方法については、「 検索プロパティのプロパティ セット GUID およびプロパティ整数 ID の取得」を参照してください。For information about how to obtain these values for properties defined by Microsoft, see Find Property Set GUIDs and Property Integer IDs for Search Properties. 独立系ソフトウェア ベンダー (ISV) によって定義されたプロパティの詳細については、そのベンダーのマニュアルを参照してください。For information about properties defined by an independent software vendor (ISV), see the documentation of that vendor.

  7. [OK] をクリックします。Click OK.

検索プロパティ リストの削除Deleting a Search Property List

リストがいずれかのフルテキスト インデックスに関連付けられている場合は、データベースからプロパティ リストを削除できません。You cannot drop a property list from a database while the list is associated with any full-text index.

Transact-SQL を使用して検索プロパティ リストを削除するにはTo delete a search property list with Transact-SQL

DROP SEARCH PROPERTY LIST (Transact-SQL) ステートメントを使用します。Use the DROP SEARCH PROPERTY LIST (Transact-SQL) statement.

Management Studio で検索プロパティ リストを削除するにはTo delete a search property list in Management Studio
  1. オブジェクト エクスプローラーで、サーバーを展開します。In Object Explorer, expand the server.

  2. [データベース] を展開し、データベースを展開します。Expand Databases, and then expand the database.

  3. [ストレージ] を展開し、 [検索プロパティ リスト] ノードを展開します。Expand Storage, and then expand the Search Property Lists node.

  4. 削除するプロパティ リストを右クリックして、 [削除] をクリックします。Right-click the property list that you want to delete, and click Delete.

  5. [OK] をクリックします。Click OK.

参照See Also

検索プロパティのプロパティ セット GUID およびプロパティ整数 ID の取得 Find Property Set GUIDs and Property Integer IDs for Search Properties
検索用フィルターの構成と管理Configure and Manage Filters for Search