Partager via


Format de fichier de recherche enregistré

Dans Windows Vista et versions ultérieures, les utilisateurs peuvent enregistrer des recherches sous la forme d’un dossier de recherche généré par un fichier XML qui stocke la requête dans un formulaire qui peut être utilisé par le sous-système de recherche Windows. Cette rubrique décrit le format de fichier (*.search-ms) et inclut les sections suivantes :

Vue d’ensemble des recherches enregistrées

Les utilisateurs peuvent enregistrer une requête de recherche en tant que dossier de recherche, dossier virtuel affiché dans l’Explorateur Windows sous le dossier Recherches. L’ouverture d’un dossier de recherche exécute la recherche enregistrée et affiche les résultats de up-to-date. Le fichier de recherche enregistré stocke la requête dans un format windows Search peut agir, en spécifiant les éléments à rechercher, où rechercher et comment présenter les résultats.

La recherche enregistrée est générée à partir d’un fichier XML (*.search-ms) dans le dossier %userprofile%\Search. Les données sont divisées en trois éléments principaux dans le fichier XML :

  • <viewInfo> spécifie les informations de présentation
  • < > de requête spécifie (informations de requête de recherche
  • <propriétés> spécifie les propriétés du fichier *.search-ms lui-même

L’exemple suivant montre la structure générale d’un fichier de recherche enregistré.

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

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

    <query>
        ...
    </query>

    <properties>
        ...
    </properties>

</persistedQuery>

élément <viewInfo>

L’élément <viewInfo> spécifie la façon dont les résultats sont présentés à l’utilisateur final. L’exemple suivant montre la structure de l’élément.

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

Le tableau suivant décrit les attributs de l’élément viewInfo <>.

Attribut Description Valeurs
viewMode Spécifie la vue dossier. Détails | Icônes | Tuiles
iconSize Contrôle la taille par défaut des icônes et des miniatures pour les éléments lorsqu’ils ne sont pas empilés. Entier compris entre 16 et 256
stackIconSize Pour une utilisation interne uniquement. N’utilisez pas. n/a
displayName Pour une utilisation interne uniquement. N’utilisez pas. n/a
autoListFlags Pour une utilisation interne uniquement. N’utilisez pas. n/a
folderFlags Pour une utilisation interne uniquement. N’utilisez pas. n/a
taskFlags Pour une utilisation interne uniquement. N’utilisez pas. n/a

<viewInfo> éléments enfants

Les éléments enfants de l’élément viewInfo <> spécifient les colonnes qui apparaissent dans les résultats de recherche de l’Explorateur Windows et la façon dont les résultats sont regroupés et triés. Chaque élément enfant contient un ensemble ordonné de colonnes, identifié par des noms canoniques de propriétés système (par exemple, System.DisplayName). S’il n’est pas défini dans le fichier de recherche enregistré, les résultats de la recherche sont présentés avec un ensemble par défaut de colonnes approprié pour les types de fichiers affichés.

Élément Description Valeurs
visibleColumns Spécifie une liste ordonnée de colonnes à afficher dans la vue des résultats. L’utilisateur peut modifier cette liste. Toute propriété système.
fréquemmentUsedColumns Pour une utilisation interne uniquement. N’utilisez pas. n/a
columnChooserColumns Pour une utilisation interne uniquement. N’utilisez pas. n/a
groupBy Spécifie une propriété système unique par laquelle regrouper les résultats. L’utilisateur peut modifier cette valeur. Toute propriété système.
sortList Spécifie une liste triée de colonnes pour trier les résultats. Jusqu’à quatre propriétés système. L’utilisateur peut modifier cette liste.
stackList Pour une utilisation interne uniquement. N’utilisez pas. n/a

<query>, élément

La requête <> élément spécifie les attributs qui définissent la façon dont les résultats sont interrogés. L’exemple suivant montre la structure de l’élément.

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

<requête> éléments enfants

Le tableau suivant décrit les éléments enfants de l’étendue <> élément.

Élément Description Valeur
Fournisseurs Pour une utilisation interne uniquement. N’utilisez pas. n/a
sous-requêtes Pour une utilisation interne uniquement. N’utilisez pas. n/a
Portée Identifie les emplacements à inclure ou exclure dans la recherche. Chemin d’accès ou ID de dossier connu de l’emplacement à inclure ou exclure. Cet élément peut également spécifier si la recherche doit inclure/exclure des chemins enfants (une recherche superficielle ou profonde).
kindList Identifie le type de fichier à rechercher. Toute valeur System.Kind.
conditions Spécifie les règles de filtrage des résultats. Par exemple, les résultats peuvent être limités aux e-mails envoyés par ou à une personne particulière. andCondition, orCondition, notCondition, leafCondition.

<étendue>, élément

L’étendue <> élément identifie les emplacements à inclure ou exclure de la recherche. L’étendue <> élément doit contenir au moins un <inclure> élément enfant présent et zéro ou plusieurs <exclure> éléments. Les emplacements peuvent être spécifiés en tant que chemin d’accès (les variables d’environnement sont prises en charge) ou en tant qu’identificateur de dossier connu . En outre, chacun de ces emplacements peut être spécifié pour être recherché profond ou peu profond en définissant le nonRecursive sur « true » ou « false » (la valeur par défaut est récursive). Les parties de la liste incluse d’emplacements peuvent être exclues en spécifiant des éléments d’exclusion.

L’exemple suivant montre une étendue <élément> qui recherche le dossier spécial documents, mais pas ses enfants, le volume « E : » et ses enfants, mais pas le répertoire « E :\windows » ou l’un de ses enfants :

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

<kindList>, élément

Ces éléments définissent l’union du « type » d’éléments qui doivent apparaître dans la bibliothèque. Les valeurs valides sont les suivantes :

  • calendrier
  • communication
  • contact
  • document
  • Messagerie électronique
  • nourrir
  • dossier
  • jeu
  • instantmessage
  • journal
  • lien
  • film
  • musique
  • note
  • image
  • programme
  • recordtv
  • searchfolder
  • tâche
  • vidéo
  • webhistory
  • article
  • autre

<conditions>, élément

Les conditions sont des filtres sur lesquels les résultats de recherche sont comparés. Par exemple, vous pouvez filtrer les résultats qui répondent à certains critères, tels que le nom de l’auteur ou la taille de fichier. L’ensemble de conditions est intégré à une arborescence de conditions unique avec des branches LOGIQUEs AND, OR et NOT.

L’exemple suivant montre la structure de la condition <> élément.

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

Le type de condition peut être l’un des éléments suivants :

Type Description Attributs disponibles
andCondition Combinaison de deux conditions enfants ou plus n/a
orCondition Disjonction de deux conditions enfants supplémentaires n/a
notCondition Négation d’une condition enfant n/a
leafCondition Compare une propriété à la valeur property, propertyType, operator, value, valuetype

Les attributs de l’élément <leafCondition> identifient les propriétés et les valeurs sur lesquelles les résultats sont filtrés.

Exemple : <conditions>, élément

L’exemple suivant filtre les résultats pour tous les éléments non lus créés par John. Autrement dit, la propriété System.IsRead a la valeur false et la chaîne « john » apparaît dans les propriétés System.Author ou 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>
...

propriétés <>, élément

Les propriétés <> élément décrivent les propriétés de la recherche enregistrée elle-même. Les fichiers de recherche enregistrés prennent en charge quatre propriétés : <créer>, <type>, <description>et <balises>. Il s’agit uniquement d’une utilisation interne.

Spécification complète du format de fichier search-ms

Voici un exemple de code XML complet pour un fichier de recherche enregistré.

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

Exemples de recherches enregistrées

Voici des exemples de fichiers *.search-ms.

Documents.search-ms récents

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

Récemment partagé par 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>