保存された検索ファイルの形式

Windows Vista 以降では、ユーザーは検索を検索フォルダーとして保存できます。これは、Windows 検索サブシステムで使用できるフォームにクエリを格納する XML ファイルによって生成されます。 このトピックでは、ファイル形式 (*.search-ms) について説明し、次のセクションを示します。

保存された検索の概要

ユーザーは、検索クエリを検索フォルダーとして保存できます。これは、Windows エクスプローラーに表示される仮想フォルダーです。 検索フォルダーを開くと、保存された検索が実行され、最新の結果が表示されます。 保存された検索ファイルには、Windows Search で実行できる形式でクエリが格納され、検索対象、検索場所、結果の表示方法が指定されます。

保存された検索は、%userprofile%\Searches フォルダーの XML ファイル (*.search-ms) から生成されます。 データは、XML ファイル内の 3 つの主要な要素に分割されます。

  • <viewInfo> はプレゼンテーション情報を指定します
  • <query> は を指定します (検索クエリ情報
  • <properties> は、*.search-ms ファイル自体のプロパティを指定します

次の例は、保存された検索ファイルの大まかな構造を示しています。

<?xml version="1.0"?>
<persistedQuery version="1.0">

    <viewInfo ...>
        ...
    </viewInfo>

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

<viewInfo> 要素

viewInfo> 要素は<、エンド ユーザーに結果を表示する方法を指定します。 次の例は、 要素の構造を示しています。

...
    <viewInfo viewMode=""
              iconSize=""
              stackIconSize=""
              autoListFlags=""
              folderFlags=""
              taskFlags=""
              displayName="">

        <visibleColumns>
            <column viewField=""/>
        </visibleColumns>

        <frequentlyUsedColumns>
            <column viewField= ""/>
        </frequentlyUsedColumns>

        <columnChooserColumns >
            <column viewField=""/>
        </columnChooserColumns >

        <groupBy viewField=""
                 direction=""/>

        <stackList>
            <stack viewField=""/>
        </stackList>

        <sortList>
            <sort viewField=""
                  direction=""/>
        </sortList>
    </viewInfo>
...

<viewInfo> 属性

次の表では、viewInfo> 要素の属性について<説明します。

属性 説明
viewMode フォルダー ビューを指定します。 詳細 |アイコン |タイル
iconSize スタックしない場合の項目のアイコンとサムネイルの既定のサイズを制御します。 16 ~ 256 の整数
stackIconSize 内部使用専用です。 使用しないでください。 該当なし
displayName 内部使用専用です。 使用しないでください。 該当なし
autoListFlags 内部使用専用です。 使用しないでください。 該当なし
folderFlags 内部使用専用です。 使用しないでください。 該当なし
taskFlags 内部使用専用です。 使用しないでください。 該当なし

<viewInfo> 子要素

viewInfo> 要素の<子要素は、Windows エクスプローラー検索結果に表示される列と、結果のグループ化と並べ替え方法を指定します。 各子要素には、システム プロパティの正規名 (System.DisplayName など) で識別される列の順序付きセットが含まれています。 保存された検索ファイルで定義されていない場合、検索結果には、表示されるファイルの種類に適した既定の列セットが表示されます。

要素 説明
visibleColumns 結果ビューに表示する列の順序付きリストを指定します。 ユーザーはこのリストを変更できます。 任意のシステム プロパティ。
frequentlyUsedColumns 内部使用専用です。 使用しないでください。 該当なし
columnChooserColumns 内部使用専用です。 使用しないでください。 該当なし
Groupby 結果をグループ化する 1 つのシステム プロパティを指定します。 ユーザーはこの値を変更できます。 任意のシステム プロパティ。
sortList 結果を並べ替える列の順序付きリストを指定します。 最大 4 つのシステム プロパティ。 ユーザーはこのリストを変更できます。
stackList 内部使用専用です。 使用しないでください。 該当なし

<query> 要素

query> 要素は<、結果のクエリ方法を定義する属性を指定します。 次の例は、 要素の構造を示しています。

...
    <query>
        <providers>
            <provider clsid=""/>    <!-- Do not use -->
        </providers>

        <subQueries>
            <subQuery path=""/>           <!-- Do not use -->
            <subQuery knownSearch=""/>    <!-- Do not use -->
        </subQueries>

        <scope>
            <include path=""        nonRecursive=""/>   <!-- [path of location to include] -->
            <include knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
            <exclude path=""        nonRecursive=""/>   <!-- [path of location to exclude] -->
            <exclude knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
        </scope>

        <kindList>
            <kind name=""/>     <!-- Kind value -->
        </kindList>

        <conditions>
            <condition type="" ...>     <!-- andCondition | orCondition | notCondition | leafCondition -->
                <attributes>
                    <attribute attributeID="" .../> <!-- Do not use -->
                </attributes>
            </condition>
        </conditions>
    </query>
...

<子要素のクエリ>

次の表では、scope> 要素の子要素について<説明します。

要素 説明
providers 内部使用専用です。 使用しないでください。 該当なし
サブクエリ 内部使用専用です。 使用しないでください。 該当なし
Scope 検索に含める場所または除外する場所を識別します。 含める場所または除外する場所のパスまたは 既知のフォルダー ID 。 この要素は、検索に子パス (シャロー検索またはディープ検索) を含めるか除外するかを指定することもできます。
kindList 検索するファイルの種類を識別します。 任意の System.Kind 値。
設定 結果をフィルター処理するための規則を指定します。 たとえば、結果は、特定のユーザーによってまたは特定のユーザーに送信されるメールに限定される場合があります。 andCondition、orCondition、notCondition、leafCondition。

<scope> 要素

scope> 要素は<、検索に含める場所または検索から除外する場所を識別します。 scope 要素には<、存在する子要素と 0 個以上<の除外>要素を少なくとも 1 つ<含める>必要>があります。 場所は、パス (環境変数がサポートされています) または 既知のフォルダー識別子として指定できます。 さらに、これらの各場所は、nonRecursive を "true" または "false" (既定値は再帰的) に設定することで、深い場所または浅い場所を検索するように指定できます。 含まれる場所の一覧の一部は、exclude 要素を指定することで除外できます。

次に示すのは <、ドキュメントの特別なフォルダーを検索するスコープ> 要素ですが、その子、"E:" ボリュームとその子は検索しませんが、"E:\windows" ディレクトリまたはその子は検索しません。

...
    <query>
        ...
        <scope>
            <include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
            <include path="E:\"/>
            <exclude path="E:\Windows" nonRecursive="false"/>
        </scope>
        ...
    </query>
...

<kindList> 要素

これらの要素は、ライブラリに表示される項目の "種類" の和集合を定義します。 有効な値は次のとおりです。

  • カレンダー
  • communication
  • contact
  • ドキュメント
  • email
  • feed
  • folder
  • ゲーム
  • instantmessage
  • ジャーナル
  • link
  • 映画
  • music
  • note
  • picture
  • プログラム
  • recordedtv
  • searchfolder
  • タスク
  • video
  • webhistory
  • item
  • other

<conditions> 要素

条件は、検索結果を比較するフィルターです。 たとえば、作成者名やファイル サイズなど、特定の条件を満たす結果をフィルター処理できます。 条件のセットは、論理 AND、OR、NOT 分岐を含む単一の条件ツリーに組み込まれます。

次の例は、condition> 要素の構造を<示しています。

...
    <query>
        ...
        <conditions>
            <condition type="" ...>
                <attributes>
                    <attribute attributeID="" .../>
                </attributes>
            </condition>
        </conditions>
    </query>
...

条件の種類には、次のいずれかを指定できます。

説明 使うことができる属性
andCondition 2 つ以上の子条件の組み合わせ 該当なし
orCondition さらに 2 つの子条件の解除 該当なし
notCondition 子条件の否定 該当なし
leafCondition プロパティと値を比較します property、propertyType、operator、value、valuetype

leafCondition> 要素の属性は<、結果がフィルター処理されるプロパティと値を識別します。

例: <conditions> 要素

次の例では、John が作成したすべての未読アイテムの結果をフィルター処理します。 つまり、System.IsRead プロパティは false で、文字列 "john" は System.Author プロパティまたは System.ItemAuthors プロパティに表示されます。

...
    <query>
        ...
        <conditions>

            <condition type="andCondition">

                <condition type="leafCondition"
                           property="System.IsRead"
                           operator="eq"
                           value="FALSE"/>

                <condition type="orCondition">

                    <condition type="leafCondition"
                               property="System.Author"
                               propertyType="string"
                               operator="wordmatch"
                               value="John"
                               valueType="System.StructuredQueryType.String"/>

                    <condition type="leafCondition"
                               property="System.ItemAuthors"
                               propertyType="string"
                               operator="wordmatch"
                               value="John"
                               valueType="System.StructuredQueryType.String"/>

                </condition>

            </condition>

        </conditions>

    </query>
...

<properties> 要素

properties> 要素は<、保存された検索自体のプロパティを記述します。 保存された検索ファイルは、作成者>、種類><、説明>、<タグ>の 4 つのプロパティ<を<サポートします。 これらは内部使用専用です。

search-ms ファイル形式の完全な仕様

保存された検索ファイルの完全な XML の例を次に示します。

<?xml version="1.0"?>

<persistedQuery version="1.0">

    <!-- The viewInfo section defines how results are displayed to the end user -->
    <viewInfo viewMode=""       <!-- details | icons | tiles -->
              iconSize=""       <!-- Integer -->
              stackIconSize=""  <!-- Do not use -->
              displayName=""    <!-- Do not use -->
              folderFlags=""    <!-- Do not use -->
              taskFlags=""      <!-- Do not use -->
              autoListFlags=""> <!-- Do not use -->

        <visibleColumns>
            <column viewField=""/>  <!-- System.[propertyname] -->
        </visibleColumns>

        <frequentlyUsedColumns>
            <column viewField= ""/> <!-- Do not use -->
        </frequentlyUsedColumns>

        <columnChooserColumns >
            <column viewField=""/>  <!-- Do not use -->
        </columnChooserColumns >

        <groupBy viewField=""       <!-- System.[propertyname] -->
                 direction=""/>     <!-- ascending | descending -->

        <stackList>
            <stack viewField=""/>   <!-- Do not use -->
        </stackList>

        <sortList>
            <sort viewField=""      <!-- System.[propertyname] -->
                  direction=""/>    <!-- ascending | descending -->
        </sortList>
    </viewInfo>

    <!-- The query section defines what gets searched (locations, file kinds) -->
    <query>
        <providers>
            <provider clsid=""/>          <!-- Do not use -->
        </providers>

        <subQueries>
            <subQuery path=""/>           <!-- Do not use -->
            <subQuery knownSearch=""/>    <!-- Do not use -->
        </subQueries>

        <scope>
            <include path=""        nonRecursive=""/>   <!-- [path of location to include] -->
            <include knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
            <exclude path=""        nonRecursive=""/>   <!-- [path of location to exclude] -->
            <exclude knownFolder="" nonRecursive=""/>   <!-- Known folder ID  -->
        </scope>

        <kindList>
            <kind name=""/>     <!-- Kind value -->
        </kindList>

        <conditions>
            <condition type="" ...>     <!-- andCondition | orCondition | notCondition | leafCondition -->
                <attributes>
                    <attribute attributeID="" .../> <!-- Do not use -->
                </attributes>
            </condition>
        </conditions>
    </query>

    <!-- The properties section identifies properties of the saved search file itself. -->
    <properties>
        ...             <!-- Do not use -->
    </properties>

</persistedQuery>

保存された検索の例

*.search-ms ファイルの例を次に示します。

Recent Documents.search-ms

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <sortList>
            <sort viewField="System.DateModified" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime" property="System.DateModified" operator="imp" value="R00UUUUUUUUZZXD-30NU" propertyType="wstr" />
        </conditions>
        <kindList>
            <kind name="Document"/>
        </kindList>
        <subQueries>
            <subQuery knownSearch="{4f800859-0bd6-4e63-bbdc-38d3b616ca48}"/>
        </subQueries>
    </query>
</persistedQuery>

最近の Music.search-ms

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <sortList>
            <sort viewField="System.DateModified" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="leafCondition" valuetype="System.StructuredQueryType.DateTime" property="System.DateModified" operator="imp" value="R00UUUUUUUUW-1WNNU" propertyType="wstr"/>
        </conditions>
        <kindList>
            <kind name="Music"/>
        </kindList>
        <subQueries>
            <subQuery knownSearch="{4f800859-0bd6-4e63-bbdc-38d3b616ca48}"/>
        </subQueries>
    </query>
</persistedQuery>

最近 Me.search-ms によって共有されました

<?xml version="1.0"?>
<persistedQuery version="1.0">
    <viewInfo viewMode="details" iconSize="16">
        <visibleColumns>
            <column viewField="System.ItemNameDisplay"/>
            <column viewField="System.DateModified"/>
            <column viewField="System.Keywords"/>
            <column viewField="System.SharedWith"/>
            <column viewField="System.ItemFolderPathDisplayNarrow"/>
        </visibleColumns>
        <frequentlyUsedColumns>
            <column viewField="System.Author"/>
            <column viewField="System.Kind"/>
            <column viewField="System.Size"/>
            <column viewField="System.Title"/>
            <column viewField="System.Rating"/>
        </frequentlyUsedColumns>
        <sortList>
            <sort viewField="System.SharedWith" direction="descending"/>
        </sortList>
    </viewInfo>

    <query>
        <conditions>
            <condition type="andCondition">
                <condition type="leafCondition" property="System.IsShared" operator="eq" value="true"/>
                <condition type="leafCondition" property="System.FileOwner" operator="eq" value="[Me]"/>
            </condition>
        </conditions>
        <kindList>
            <kind name="item"/>
        </kindList>
        <scope>
            <include knownFolder="{5E6C858F-0E22-4760-9AFE-EA3317B67173}"/>
            <include knownFolder="{DFDF76A2-C82A-4D63-906A-5644AC457385}"/>
        </scope>
    </query>
</persistedQuery>