共用方式為


已儲存的搜尋檔案格式

在 Windows Vista 和更新版本中,使用者可以將搜尋儲存為搜尋資料夾,該資料夾是由 XML 檔案所產生,該檔案會將查詢儲存在 Windows 搜尋子系統可以使用的表單中。 本主題描述 (*.search-ms) 的檔案格式,並包含下列各節:

已儲存的搜尋概觀

使用者可以將搜尋查詢儲存為 [搜尋資料夾],這是 Windows 檔案總管中顯示在 [搜尋] 資料夾下的虛擬資料夾。 開啟 [搜尋資料夾] 會執行已儲存的搜尋,並顯示最新的結果。 儲存的搜尋檔案會以 Windows 搜尋可以採取動作的格式儲存查詢、指定要搜尋的內容、搜尋位置,以及如何呈現結果。

儲存的搜尋是從 %userprofile%\Search 資料夾中的 XML 檔案 (*.search-ms) 產生。 資料分成 XML 檔案中的三個主要元素:

  • <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 僅供內部使用。 請勿使用。 n/a
displayName 僅供內部使用。 請勿使用。 n/a
autoListFlags 僅供內部使用。 請勿使用。 n/a
folderFlags 僅供內部使用。 請勿使用。 n/a
taskFlags 僅供內部使用。 請勿使用。 n/a

<viewInfo > 子項目

viewInfo > 元素的 < 子項目會指定哪些資料行出現在 Windows 檔案總管搜尋結果中,以及結果的分組和排序方式。 每個子項目都包含一組排序的資料行,由系統屬性 (標準名稱識別,例如 System.DisplayName) 。 如果未在儲存的搜尋檔案中定義,搜尋結果會顯示一組適用于所顯示檔案類型的預設資料行。

元素 描述
visibleColumns 指定要顯示在結果檢視中的資料行排序清單。 使用者可以變更此清單。 任何系統屬性。
frequentlyUsedColumns 僅供內部使用。 請勿使用。 n/a
columnChooserColumns 僅供內部使用。 請勿使用。 n/a
groupBy 指定要分組結果的單一系統屬性。 使用者可以變更此值。 任何系統屬性。
sortList 指定要排序結果的資料行排序清單。 最多四個系統屬性。 使用者可以變更此清單。
stackList 僅供內部使用。 請勿使用。 n/a

<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>
...

<query > Child Elements

下表描述 scope > 元素的 < 子項目。

元素 描述
提供者 僅供內部使用。 請勿使用。 n/a
subQueries 僅供內部使用。 請勿使用。 n/a
範圍 識別要包含在搜尋中或排除的位置。 要包含或排除之位置的路徑或 已知資料夾識別碼 。 此元素也可以指定搜尋是否應該在淺層或深層搜尋) (包含/排除子路徑。
kindList 識別要搜尋的檔案 () 類型。 任何 System.Kind 值。
條件 指定篩選結果的規則。 例如,結果可能會受限於由 或特定人員傳送的電子郵件。 andCondition、orCondition、notCondition、leafCondition。

<scope > 元素

<scope > 元素會識別要包含或排除在搜尋中的位置。 <scope > 元素必須至少包含一個 < include > 子項目存在,以及零個或多個 < exclude > 元素。 您可以) 或 已知資料夾識別碼,將位置指定為 (環境變數的路徑。 此外,您可以將非遞迴設定為 「true」 或 「false」 (預設值為遞迴) ,以指定這些位置的深層或淺層。 您可以藉由指定排除專案來排除包含的位置清單部分。

以下顯示 <> 範圍元素,它會搜尋檔特殊資料夾,但不會搜尋其子資料夾、「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
  • 連絡人
  • 文件
  • 電子郵件
  • 饋送
  • folder
  • 遊戲
  • instantmessage
  • 雜誌
  • link
  • 電影
  • music
  • 注意
  • picture
  • program
  • recordedtv
  • searchfolder
  • 工作 (task)
  • 影片
  • webhistory
  • item
  • 其他

<conditions > 元素

條件是比較搜尋結果的篩選準則。 例如,您可以篩選符合特定準則的結果,例如作者名稱或檔案大小。 條件集內建于具有邏輯 AND、OR 和 NOT 分支的單一條件樹狀結構中。

下列範例顯示 condition > 元素的結構 < 。

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

條件類型可以是下列其中一項:

類型 Description 可用的屬性
andCondition 結合兩個或多個子條件 n/a
orCondition 分離兩個以上的子條件 n/a
notCondition 子條件的否定 n/a
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 > 元素描述已儲存搜尋本身的屬性。 已儲存的搜尋檔案支援四個屬性: < 作者 > 、 < 種類 > 、 < 描述 > 和 < 標記 > 。 這些僅供內部使用。

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>

Recent 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>