Freigeben über


Gespeichertes Suchdateiformat

In Windows Vista und höher können Benutzer Suchvorgänge als Suchordner speichern, der von einer XML-Datei generiert wird, in der die Abfrage in einem Formular gespeichert wird, das vom Windows-Suchsubsystem verwendet werden kann. Dieses Thema beschreibt das Dateiformat (*.search-ms) und enthält die folgenden Abschnitte:

Übersicht über gespeicherte Suchvorgänge

Benutzer können eine Suchabfrage als Suchordner speichern, einen virtuellen Ordner, der in Windows Explorer unter dem Ordner Suchen angezeigt wird. Beim Öffnen eines Suchordners wird die gespeicherte Suche ausgeführt und aktuelle Ergebnisse angezeigt. In der gespeicherten Suchdatei wird die Abfrage in einem Format gespeichert, auf das Windows Search reagieren kann. Dabei wird angegeben, wonach gesucht werden soll, wo gesucht werden soll und wie die Ergebnisse angezeigt werden sollen.

Die gespeicherte Suche wird aus einer XML-Datei (*.search-ms) im Ordner %userprofile%\Searches generiert. Die Daten werden in der XML-Datei in drei primäre Elemente unterteilt:

  • <viewInfo> gibt Präsentationsinformationen an
  • <Abfrage> gibt an (Suchabfrageinformationen)
  • <properties> gibt Eigenschaften der *.search-ms-Datei selbst an

Das folgende Beispiel zeigt die allgemeine Struktur einer gespeicherten Suchdatei.

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

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

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

<viewInfo-Element>

Das <viewInfo-Element> gibt an, wie die Ergebnisse dem Endbenutzer präsentiert werden. Das folgende Beispiel zeigt die Struktur des Elements.

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

In der folgenden Tabelle werden die Attribute des <viewInfo-Elements> beschrieben.

attribute BESCHREIBUNG Werte
Viewmode Gibt die Ordneransicht an. Details | Symbole | Fliesen
iconSize Steuert die Standardgröße der Symbole und Miniaturansichten für Elemente, wenn sie nicht stapeln. Ganze Zahl zwischen 16 und 256
stackIconSize Nur zur internen Verwendung. Darf nicht verwendet werden.
displayName Nur zur internen Verwendung. Darf nicht verwendet werden.
autoListFlags Nur zur internen Verwendung. Darf nicht verwendet werden.
folderFlags Nur zur internen Verwendung. Darf nicht verwendet werden.
taskFlags Nur zur internen Verwendung. Darf nicht verwendet werden.

<untergeordnete ViewInfo-Elemente>

Die untergeordneten Elemente des <viewInfo-Elements> geben an, welche Spalten in den Windows-Explorer Suchergebnissen angezeigt werden und wie die Ergebnisse gruppiert und sortiert werden. Jedes untergeordnete Element enthält einen geordneten Satz von Spalten, der durch kanonische Namen von Systemeigenschaften (z. B. System.DisplayName) identifiziert wird. Wenn sie in der gespeicherten Suchdatei nicht definiert sind, werden die Suchergebnisse mit einem Standardsatz von Spalten angezeigt, die für die angezeigten Dateitypen geeignet sind.

Element BESCHREIBUNG Werte
visibleColumns Gibt eine sortierte Liste von Spalten an, die in der Ergebnisansicht angezeigt werden sollen. Der Benutzer kann diese Liste ändern. Jede Systemeigenschaft.
frequentlyUsedColumns Nur zur internen Verwendung. Darf nicht verwendet werden.
columnChooserColumns Nur zur internen Verwendung. Darf nicht verwendet werden.
Groupby Gibt eine einzelne Systemeigenschaft an, nach der die Ergebnisse gruppiert werden sollen. Der Benutzer kann diesen Wert ändern. Jede Systemeigenschaft.
Sortlist Gibt eine sortierte Liste von Spalten an, nach der die Ergebnisse sortiert werden sollen. Bis zu vier Systemeigenschaften. Der Benutzer kann diese Liste ändern.
stackList Nur zur internen Verwendung. Darf nicht verwendet werden.

<query-Element>

Das <Abfrageelement> gibt die Attribute an, die definieren, wie die Ergebnisse abgefragt werden. Das folgende Beispiel zeigt die Struktur des Elements.

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

<untergeordnete Elemente abfragen>

In der folgenden Tabelle werden die untergeordneten Elemente des <Bereichselements> beschrieben.

Element BESCHREIBUNG Wert
providers Nur zur internen Verwendung. Darf nicht verwendet werden.
Unterabfragen Nur zur internen Verwendung. Darf nicht verwendet werden.
`Scope` Gibt Speicherorte an, die in die Suche eingeschlossen oder ausgeschlossen werden sollen. Entweder ein Pfad oder eine bekannte Ordner-ID des Speicherorts, der eingeschlossen oder ausgeschlossen werden soll. Dieses Element kann auch angeben, ob die Suche untergeordnete Pfade einschließen bzw. ausschließen soll (eine flache oder tiefe Suche).
kindList Gibt die Art von Datei(en) an, nach der gesucht werden soll. Beliebiger System.Kind-Wert.
Bedingungen Gibt Regeln zum Filtern von Ergebnissen an. Die Ergebnisse können beispielsweise auf E-Mails beschränkt werden, die von oder an eine bestimmte Person gesendet werden. andCondition oderCondition, notCondition, leafCondition.

<scope-Element>

Das <scope-Element> identifiziert die Speicherorte, die bei der Suche eingeschlossen oder ausgeschlossen werden sollen. Das <scope-Element> muss mindestens ein <include> untergeordnetes Element vorhanden und null oder mehr <ausgeschlossene> Elemente enthalten. Die Speicherorte können entweder als Pfad (Umgebungsvariablen werden unterstützt) oder als bekannter Ordnerbezeichner angegeben werden. Darüber hinaus kann jeder dieser Speicherorte so angegeben werden, dass er tief oder flach durchsucht wird, indem nonRecursive auf "true" oder "false" festgelegt wird (der Standardwert ist rekursiv). Teile der enthaltenen Liste von Speicherorten können durch Angeben von Ausschlusselementen ausgeschlossen werden.

Im Folgenden wird ein <Bereichselement> angezeigt, das den speziellen Ordner "Dokumente", aber nicht seine untergeordneten Elemente, das Volume "E:" und die untergeordneten Elemente, aber nicht das Verzeichnis "E:\windows" oder eines seiner untergeordneten Elemente durchsucht:

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

<kindList-Element>

Diese Elemente definieren die Vereinigung der "Art" von Elementen, die in der Bibliothek angezeigt werden sollen. Gültige Werte sind:

  • Kalender
  • communication
  • contact
  • Dokument
  • email
  • feed
  • folder
  • Spiel
  • instantmessage
  • Journal
  • link
  • Film
  • music
  • Hinweis
  • picture
  • Programm
  • recordedtv
  • Suchordner
  • task
  • video
  • webhistory
  • item
  • Andere

<conditions-Element>

Bedingungen sind Filter, mit denen Suchergebnisse verglichen werden. Sie können beispielsweise Ergebnisse filtern, die bestimmte Kriterien erfüllen, z. B. Autorname oder Dateigröße. Der Zustandssatz ist in eine einzelne Bedingungsstruktur mit logischen AND-, OR- und NOT-Branches integriert.

Das folgende Beispiel zeigt die Struktur des Bedingungselements<>.

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

Der Bedingungstyp kann einer der folgenden sein:

type Beschreibung Verfügbare Attribute
Andcondition Verbindung von zwei oder mehr untergeordneten Bedingungen
Orcondition Disjunktion von zwei weiteren untergeordneten Bedingungen
Notcondition Negation einer untergeordneten Bedingung
leafCondition Vergleicht eine Eigenschaft mit einem Wert property, propertyType, operator, value, valuetype

Die <Attribute des leafCondition-Elements> identifizieren die Eigenschaften und Werte, nach denen die Ergebnisse gefiltert werden.

Beispiel: <conditions-Element>

Im folgenden Beispiel werden die Ergebnisse nach allen ungelesenen Elementen gefiltert, die von John erstellt wurden. Das heißt, die System.IsRead-Eigenschaft ist false, und die Zeichenfolge "john" wird in den Eigenschaften System.Author oder System.ItemAuthors angezeigt.

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

Das <properties-Element> beschreibt die Eigenschaften der gespeicherten Suche selbst. Gespeicherte Suchdateien unterstützen vier Eigenschaften: <author>, <kind>, <description> und <tags>. Diese sind nur für den internen Gebrauch vorgesehen.

Vollständige Spezifikation des search-ms-Dateiformats

Im Folgenden finden Sie ein Beispiel für den vollständigen XML-Code für eine gespeicherte Suchdatei.

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

Beispiele für gespeicherte Suchvorgänge

Im Folgenden finden Sie Beispiele für *.search-ms-Dateien.

Zuletzt verwendete Dokumente.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>

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

Kürzlich von Me.search-ms freigegeben

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