Uložený formát vyhledávacího souboru
V systému Windows Vista a novějších můžou uživatelé ukládat hledání jako složku výsledků hledání, která je generována souborem XML, který ukládá dotaz ve formuláři, který může být používán subsystémem Windows Search. Toto téma popisuje formát souboru (*.search-ms) a obsahuje následující části:
- přehled uložených hledání
- elementu<viewInfo>
- < elementu> dotazu
- <vlastnosti> elementu
- úplná specifikace formátu souboru search-ms
- příklady uložených hledání
Přehled uložených hledání
Uživatelé můžou vyhledávací dotaz uložit jako složku výsledků hledání, virtuální složku zobrazenou v Průzkumníku Windows ve složce Hledání. Otevření složky výsledků hledání spustí uložené hledání a zobrazí výsledky up-to-date. Uložený vyhledávací soubor ukládá dotaz ve formátu, na kterém může Windows Search reagovat, určit, co se má hledat, kde hledat a jak prezentovat výsledky.
Uložené hledání se generuje ze souboru XML (*.search-ms) ve složce %userprofile%\Searches. Data jsou rozdělena do tří primárních prvků v souboru XML:
- <viewInfo> určuje informace o prezentaci.
- < > dotazu určuje (informace o vyhledávacím dotazu
- <vlastnosti> určuje vlastnosti samotného souboru *.search-ms.
Následující příklad ukazuje základní strukturu uloženého vyhledávacího souboru.
<?xml version="1.0"?>
<persistedQuery version="1.0">
<viewInfo ...>
...
</viewInfo>
<query>
...
</query>
<properties>
...
</properties>
</persistedQuery>
element <viewInfo>
Element <viewInfo> určuje, jak jsou výsledky prezentovány koncovému uživateli. Následující příklad ukazuje strukturu elementu.
...
<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> Atributy
Následující tabulka popisuje atributy elementu <viewInfo>.
Atribut | Popis | Hodnoty |
---|---|---|
viewMode | Určuje zobrazení složky. | Podrobnosti | Ikony | Dlaždice |
iconSize | Určuje výchozí velikost ikon a miniatur položek, pokud nejsou na zásobníku. | Celé číslo mezi 16 a 256 |
stackIconSize | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
displayName | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
autoListFlags | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
folderFlags | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
taskFlags | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
<viewInfo> podřízených elementů
Podřízené prvky elementu <viewInfo> určují, které sloupce se zobrazí ve výsledcích hledání v Průzkumníku Windows a jak jsou výsledky seskupené a seřazené. Každý podřízený prvek obsahuje seřazenou sadu sloupců identifikovaných kanonickými názvy systémových vlastností (například System.DisplayName). Pokud není v uloženém vyhledávacím souboru definováno, zobrazí se výsledky hledání s výchozí sadou sloupců vhodných pro zobrazené typy souborů.
Element | Popis | Hodnoty |
---|---|---|
visibleColumns | Určuje seřazený seznam sloupců, které se zobrazí v zobrazení výsledků. Uživatel může tento seznam změnit. | Jakákoli vlastnost systému. |
častoUsedColumns | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
columnChooserColumns | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
groupBy | Určuje jednu systémovou vlastnost, podle které se mají výsledky seskupit. Uživatel může tuto hodnotu změnit. | Jakákoli vlastnost systému. |
sortList | Určuje seřazený seznam sloupců, podle kterých se mají výsledky seřadit. | Až čtyři systémové vlastnosti. Uživatel může tento seznam změnit. |
stackList | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
element> dotazu <
Prvek <dotazu> určuje atributy, které definují způsob dotazování výsledků. Následující příklad ukazuje strukturu elementu.
...
<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>
...
<podřízených elementů dotazu>
Následující tabulka popisuje podřízené prvky <oboru> elementu.
Element | Popis | Hodnota |
---|---|---|
Poskytovatelů | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
poddotazy | Pouze pro interní použití. Nepoužívejte. | není k dispozici |
Rozsah | Identifikuje umístění, která mají být zahrnuta nebo vyloučena do vyhledávání. | Buď cesta, nebo známé ID složky umístění, které se má zahrnout nebo vyloučit. Tento prvek může také určit, zda má hledání zahrnovat nebo vyloučit podřízené cesty (mělké nebo hluboké hledání). |
kindList | Identifikuje typ souborů, které se mají vyhledat. | Libovolná hodnota System.Kind. |
podmínky | Určuje pravidla pro filtrování výsledků. Výsledky můžou být například omezené na e-maily odeslané konkrétní osobou nebo konkrétní osobu. | andCondition, orCondition, notCondition, leafCondition. |
element> oboru <
Prvek <oboru> identifikuje umístění, která mají být zahrnuta nebo vyloučena z vyhledávání. Prvek> oboru <musí obsahovat alespoň jeden <, který obsahuje podřízený prvek> a nula nebo více <vyloučit prvky>. Umístění je možné zadat jako cestu (proměnné prostředí jsou podporovány) nebo jako známý identifikátor složky. Kromě toho je možné každou z těchto umístění zadat tak, aby byla prohledána hluboko nebo mělká, a to nastavením hodnoty NonRecursive na true nebo false (výchozí hodnota je rekurzivní). Části zahrnutého seznamu umístění mohou být vyloučeny zadáním prvků vyloučení.
Následuje příklad <oboru> elementu, který bude prohledávat speciální složku dokumentů, ale ne její podřízené položky, svazek "E:" a jeho podřízené položky, ale ne adresář "E:\windows" nebo žádný z jeho podřízených položek:
...
<query>
...
<scope>
<include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
<include path="E:\"/>
<exclude path="E:\Windows" nonRecursive="false"/>
</scope>
...
</query>
...
element <kindList>
Tyto prvky definují sjednocení "druhu" položek, které by se měly objevit v knihovně. Platné hodnoty jsou:
- kalendář
- komunikace
- kontakt
- dokument
- krmit
- složka
- hra
- instantmessage
- deník
- propojit
- film
- hudba
- poznámka
- obraz
- program
- recordedtv
- searchfolder
- úkol
- video
- webhistory
- položka
- jiný
<podmínky> elementu
Podmínky jsou filtry, se kterými se výsledky hledání porovnávají. Můžete například filtrovat výsledky, které splňují určitá kritéria, například jméno autora nebo velikost souboru. Sada podmínek je integrovaná do jediného stromu podmínek s logickým operátorem AND, NEBO a NE větvemi.
Následující příklad ukazuje strukturu <podmínka> elementu.
...
<query>
...
<conditions>
<condition type="" ...>
<attributes>
<attribute attributeID="" .../>
</attributes>
</condition>
</conditions>
</query>
...
Typ podmínky může být jeden z následujících:
Typ | Popis | Dostupné atributy |
---|---|---|
andCondition | Spojení dvou nebo více podřízených podmínek | není k dispozici |
orCondition | Disjunkce dvou dalších podřízených podmínek | není k dispozici |
notCondition | Negace podřízené podmínky | není k dispozici |
leafCondition | Porovná vlastnost s hodnotou. | property, propertyType, operator, value, valuetype |
Atributy elementu <leafCondition> identifikují vlastnosti a hodnoty, podle kterých jsou výsledky filtrovány.
Příklad: <podmínky> elementu
Následující příklad filtruje výsledky pro všechny nepřečtené položky vytvořené Johnem. To znamená, System.IsRead vlastnost je false a řetězec "john" se zobrazí ve vlastnostech System.Author nebo 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>
...
element <vlastnosti>
Vlastnost <> element popisuje vlastnosti samotného uloženého vyhledávání. Uložené soubory hledání podporují čtyři vlastnosti: <autora>, <druh>, <popis>a <značky>. Jedná se pouze o interní použití.
Úplná specifikace formátu souboru search-ms
Následuje příklad úplného XML uloženého vyhledávacího souboru.
<?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>
Příklady uložených hledání
Tady jsou příklady souborů *.search-ms.
Poslední dokumenty.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>
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>
Nedávno sdíleno uživatelem 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>