Format de fichier de recherche enregistré

Dans Windows Vista et versions ultérieures, les utilisateurs peuvent enregistrer les recherches en tant que 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 comprend les sections suivantes :

Vue d’ensemble des recherches enregistrées

Les utilisateurs peuvent enregistrer une requête de recherche sous la forme d’un dossier de recherche, un dossier virtuel affiché dans Windows Explorer sous le dossier Recherches. L’ouverture d’un dossier de recherche exécute la recherche enregistrée et affiche les résultats à jour. Le fichier de recherche enregistré stocke la requête dans un format sur lequel 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%\Searches. Les données sont divisées en trois éléments principaux dans le fichier XML :

  • <viewInfo> spécifie les informations de présentation
  • <spécifie la requête> (informations de requête de recherche)
  • <properties> 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>

<viewInfo> , élément

L’élément <viewInfo> spécifie comment 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> Attributes

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

Attribut Description Valeurs
viewMode Spécifie l’affichage des dossiers. Détails | Icônes | Tuiles
iconSize Contrôle la taille par défaut des icônes et des miniatures des éléments lorsqu’ils ne sont pas empilés. Entier compris entre 16 et 256
stackIconSize À usage interne uniquement. Ne pas utiliser. n/a
displayName À usage interne uniquement. Ne pas utiliser. n/a
autoListFlags À usage interne uniquement. Ne pas utiliser. n/a
folderFlags À usage interne uniquement. Ne pas utiliser. n/a
taskFlags À usage interne uniquement. Ne pas utiliser. n/a

<viewInfo> , éléments enfants

Les éléments enfants de l’élément <viewInfo> spécifient les colonnes qui s’affichent dans les résultats de recherche windows Explorer 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és 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 de colonnes par défaut approprié pour les types de fichiers affichés.

Élément Description Valeurs
visibleColumns Spécifie une liste ordonnée de colonnes à afficher dans l’affichage des résultats. L’utilisateur peut modifier cette liste. Toute propriété système.
frequentlyUsedColumns À usage interne uniquement. Ne pas utiliser. n/a
columnChooserColumns À usage interne uniquement. Ne pas utiliser. 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 ordonnée de colonnes par lesquelles trier les résultats. Jusqu’à quatre propriétés système. L’utilisateur peut modifier cette liste.
stackList À usage interne uniquement. Ne pas utiliser. n/a

<query> , élément

L’élément <query> 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>
...

<éléments enfants de requête>

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

Élément Description Valeur
fournisseurs À usage interne uniquement. Ne pas utiliser. n/a
Sous-requêtes À usage interne uniquement. Ne pas utiliser. n/a
Étendue Identifie les emplacements à inclure ou à exclure dans la recherche. Un chemin d’accès ou un 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 d’accès enfants (une recherche superficielle ou profonde).
kindList Identifie le ou les types de fichiers à 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, ouCondition, notCondition, leafCondition.

<élément scope>

L’élément <scope> identifie les emplacements à inclure ou à exclure de la recherche. L’élément scope doit contenir au moins un><élément include enfant présent et zéro ou plusieurs <éléments d’exclusion>.>< Les emplacements peuvent être spécifiés sous forme de chemin d’accès (les variables d’environnement sont prises en charge) ou d’identificateur de dossier connu. En outre, chacun de ces emplacements peut être spécifié pour faire l’objet d’une recherche approfondie ou superficielle en définissant le non-récursif sur « true » ou « false » (la valeur par défaut est récursive). Certaines parties de la liste incluse des emplacements peuvent être exclues en spécifiant des éléments d’exclusion.

L’élément suivant montre un <élément d’étendue> qui recherche le dossier spécial des 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>
...

<élément kindList>

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
  • email
  • feed
  • dossier
  • Jeu
  • instantmessage
  • Journal
  • link
  • Film
  • music
  • remarque
  • picture
  • programme
  • recordedtv
  • searchfolder
  • tâche
  • video
  • webhistory
  • item
  • other

<conditions> , élément

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

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

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

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

Type Description Attributs disponibles
andCondition Combinaison de deux conditions enfants ou plus n/a
orCondition Disjonction de deux autres conditions d’enfant 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 : <condition> , é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>
...

<properties> , élément

L’élément <properties> décrit 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 : <auteur>, <type>, <description> et <balises>. Elles sont destinées uniquement à un usage 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>