Opgeslagen zoekbestandsindeling
In Windows Vista en hoger kunnen gebruikers zoekopdrachten opslaan als een zoekmap die wordt gegenereerd door een XML-bestand waarin de query wordt opgeslagen in een formulier dat kan worden gebruikt door het Windows-zoeksubsysteem. Dit onderwerp beschrijft de bestandsindeling (*.search-ms) en bevat de volgende secties:
- Overzicht van opgeslagen zoekopdrachten
- <viewInfo> Element
- <query> element
- <eigenschappen> Element
- volledige specificatie van de search-ms-bestandsindeling
- Voorbeelden van opgeslagen zoekopdrachten
Overzicht van opgeslagen zoekopdrachten
Gebruikers kunnen een zoekquery opslaan als een zoekmap, een virtuele map die wordt weergegeven in Windows Verkenner onder de map Zoekopdrachten. Als u een zoekmap opent, wordt de opgeslagen zoekopdracht uitgevoerd en worden up-to-datumresultaten weergegeven. In het opgeslagen zoekbestand wordt de query opgeslagen in een indeling waarop Windows Search kan worden uitgevoerd, waarin wordt opgegeven waarnaar moet worden gezocht, waar moet worden gezocht en hoe de resultaten worden weergegeven.
De opgeslagen zoekopdracht wordt gegenereerd op basis van een XML-bestand (*.search-ms) in de map %userprofile%\Searches. De gegevens zijn onderverdeeld in drie primaire elementen in het XML-bestand:
- <viewInfo-> geeft presentatiegegevens op
- <query> specificeert (zoekquerygegevens)
- <eigenschappen> eigenschappen van het bestand *.search-ms zelf opgeven
In het volgende voorbeeld ziet u de structuur op hoog niveau van een opgeslagen zoekbestand.
<?xml version="1.0"?>
<persistedQuery version="1.0">
<viewInfo ...>
...
</viewInfo>
<query>
...
</query>
<properties>
...
</properties>
</persistedQuery>
<viewInfo> element
Het element <viewInfo> geeft aan hoe de resultaten aan de eindgebruiker worden gepresenteerd. In het volgende voorbeeld ziet u de structuur van het element.
...
<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> Kenmerken
In de volgende tabel worden de kenmerken van het element><viewInfo beschreven.
Attribuut | Beschrijving | Waarden |
---|---|---|
viewMode | Hiermee geeft u de mapweergave. | Details | Pictogrammen | Tegels |
iconSize | Hiermee bepaalt u de standaardgrootte van de pictogrammen en miniaturen voor items wanneer deze niet worden gestapeld. | Geheel getal tussen 16 en 256 |
stackIconSize | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
displayName | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
autoListFlags | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
folderFlags | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
taskFlags | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
<viewInfo> Onderliggende elementen
De onderliggende elementen van de <viewInfo> element geven op welke kolommen worden weergegeven in de zoekresultaten van Windows Verkenner en hoe de resultaten worden gegroepeerd en gesorteerd. Elk onderliggend element bevat een geordende set kolommen, geïdentificeerd door canonieke namen van systeemeigenschappen (bijvoorbeeld System.DisplayName). Als dit niet is gedefinieerd in het opgeslagen zoekbestand, worden de zoekresultaten weergegeven met een standaardset kolommen die geschikt zijn voor de weergegeven bestandstypen.
Element | Beschrijving | Waarden |
---|---|---|
visibleColumns | Hiermee geeft u een geordende lijst met kolommen op die moeten worden weergegeven in de resultatenweergave. De gebruiker kan deze lijst wijzigen. | Elke systeemeigenschap. |
frequentlyUsedColumns | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
columnChooserColumns | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
groupBy | Hiermee geeft u één systeemeigenschap op waarmee de resultaten moeten worden gegroepeerd. De gebruiker kan deze waarde wijzigen. | Elke systeemeigenschap. |
sortList | Hiermee geeft u een geordende lijst met kolommen op om de resultaten te sorteren. | Maximaal vier systeemeigenschappen. De gebruiker kan deze lijst wijzigen. |
stackList | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
<query> element
De <query> element geeft de kenmerken op die bepalen hoe de resultaten worden opgevraagd. In het volgende voorbeeld ziet u de structuur van het element.
...
<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> onderliggende elementen
In de volgende tabel worden de onderliggende elementen van het <bereik> element beschreven.
Element | Beschrijving | Waarde |
---|---|---|
Providers | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
subquery's | Alleen voor intern gebruik. Niet gebruiken. | n.v.t |
Draagwijdte | Identificeert locaties die moeten worden opgenomen of uitgesloten in de zoekopdracht. | Een pad of een bekende map-id van de locatie die moet worden opgenomen of uitgesloten. Dit element kan ook opgeven of de zoekopdracht onderliggende paden moet bevatten/uitsluiten (een ondiepe of diepe zoekopdracht). |
kindList | Identificeert het type bestand(en) dat moet worden gezocht. | Elke System.Kind-waarde. |
Voorwaarden | Hiermee geeft u regels voor het filteren van resultaten. De resultaten kunnen bijvoorbeeld worden beperkt tot e-mailberichten die door of naar een bepaalde persoon worden verzonden. | andCondition, orCondition, notCondition, leafCondition. |
<bereik> element
Het <bereik> element identificeert de locaties die moeten worden opgenomen of uitgesloten van de zoekopdracht. Het <bereik> element moet ten minste één <bevatten> onderliggend element aanwezig en nul of meer <> elementen uitsluiten. De locaties kunnen worden opgegeven als een pad (omgevingsvariabelen worden ondersteund) of als een bekende map-id. Bovendien kan elk van deze locaties worden opgegeven om diep of ondiep te worden doorzocht door het nietRecursief in te stellen op 'true' of 'false' (standaard is recursief). Onderdelen van de opgenomen lijst met locaties kunnen worden uitgesloten door uitgesloten elementen op te geven.
Hieronder ziet u een <bereik> element waarmee in de speciale map documenten wordt gezocht, maar niet in de onderliggende mappen, het volume E:en de onderliggende items, maar niet in de map E:\windows of een van de onderliggende items:
...
<query>
...
<scope>
<include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
<include path="E:\"/>
<exclude path="E:\Windows" nonRecursive="false"/>
</scope>
...
</query>
...
<kindList>-element
Deze elementen definiëren de samenvoeging van het soort items dat in de bibliotheek moet worden weergegeven. De geldige waarden zijn:
- kalender
- communicatie
- contact
- document
- voeden
- map
- spel
- instantmessage
- dagboek
- verbinden
- film
- muziek
- notitie
- beeld
- programma
- opgenomentv
- zoekmap
- taak
- video
- webhistory
- item
- ander
<voorwaarden> element
Voorwaarden zijn filters waarmee zoekresultaten worden vergeleken. U kunt bijvoorbeeld resultaten filteren die voldoen aan bepaalde criteria, zoals de naam van de auteur of de bestandsgrootte. De set voorwaarden is ingebouwd in één voorwaardestructuur met logische EN-, OR- en NOT-vertakkingen.
In het volgende voorbeeld ziet u de structuur van de <voorwaarde> element.
...
<query>
...
<conditions>
<condition type="" ...>
<attributes>
<attribute attributeID="" .../>
</attributes>
</condition>
</conditions>
</query>
...
Het voorwaardetype kan een van de volgende zijn:
Type | Beschrijving | Beschikbare kenmerken |
---|---|---|
andCondition | Combinatie van twee of meer onderliggende voorwaarden | n.v.t |
orCondition | Disjunction of two of more child conditions | n.v.t |
notCondition | Negatie van een onderliggende voorwaarde | n.v.t |
leafCondition | Hiermee wordt een eigenschap vergeleken met de waarde | eigenschap, propertyType, operator, waarde, waardetype |
De kenmerken van het <leafCondition> element identificeren de eigenschappen en waarden waarop de resultaten worden gefilterd.
Voorbeeld: <voorwaarden> element
In het volgende voorbeeld worden resultaten gefilterd voor alle ongelezen items die zijn geschreven door John. Dat wil gezegd: de eigenschap System.IsRead is onwaar en de tekenreeks 'john' wordt weergegeven in de eigenschappen System.Author of 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>
...
<eigenschappen> element
Het <eigenschappen> element beschrijft de eigenschappen van de opgeslagen zoekopdracht zelf. Opgeslagen zoekbestanden ondersteunen vier eigenschappen: <auteur>, <soort>, <beschrijving>en <tags>. Deze zijn alleen voor intern gebruik.
Volledige specificatie van de search-ms-bestandsindeling
Hier volgt een voorbeeld van de volledige XML voor een opgeslagen zoekbestand.
<?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>
Voorbeelden van opgeslagen zoekopdrachten
Hier volgen enkele voorbeelden van *.search-ms-bestanden.
Recente documenten.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>
Recente 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>
Onlangs gedeeld door 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>