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
- <viewInfo>, élément
- <requête>, élément
- propriétés <> Élément
- Spécification complète du format de fichier search-ms
- exemples de recherches enregistrées
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.
<é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>