Zapisany format pliku wyszukiwania
W systemie Windows Vista i nowszych użytkownicy mogą zapisywać wyszukiwania jako folder wyszukiwania, który jest generowany przez plik XML, który przechowuje zapytanie w formularzu, który może być używany przez podsystem wyszukiwania systemu Windows. W tym temacie opisano format pliku (*.search-ms) i zawiera następujące sekcje:
- omówienie zapisanych wyszukiwań
- <viewInfo>, element
- < kwerendy>
- <właściwości>, element
- pełna specyfikacja formatu pliku search-ms
- przykłady zapisanych wyszukiwań
Omówienie zapisanych wyszukiwań
Użytkownicy mogą zapisywać zapytanie wyszukiwania jako folder wyszukiwania, folder wirtualny wyświetlany w Eksploratorze Windows w folderze Wyszukiwania. Otwarcie folderu wyszukiwania powoduje uruchomienie zapisanego wyszukiwania i wyświetlenie up-to-date wyników. Zapisany plik wyszukiwania przechowuje zapytanie w formacie, w którym usługa Windows Search może działać, określając, co należy wyszukiwać, gdzie wyszukiwać i jak prezentować wyniki.
Zapisane wyszukiwanie jest generowane na podstawie pliku XML (*.search-ms) w folderze %userprofile%\Searches. Dane są podzielone na trzy podstawowe elementy w pliku XML:
- <viewInfo> określa informacje o prezentacji
- <określa> zapytania (informacje o kwerendzie wyszukiwania
- <właściwości> określa właściwości samego pliku *.search-ms
W poniższym przykładzie przedstawiono strukturę wysokiego poziomu zapisanego pliku wyszukiwania.
<?xml version="1.0"?>
<persistedQuery version="1.0">
<viewInfo ...>
...
</viewInfo>
<query>
...
</query>
<properties>
...
</properties>
</persistedQuery>
<viewInfo, element>
Element <viewInfo> określa sposób prezentowania wyników użytkownikowi końcowemu. Poniższy przykład przedstawia strukturę 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>
...
atrybuty <viewInfo>
W poniższej tabeli opisano atrybuty elementu <viewInfo>.
Atrybut | Opis | Wartości |
---|---|---|
viewMode | Określa widok folderu. | Szczegóły | Ikony | Płytki |
iconSize | Określa domyślny rozmiar ikon i miniatur dla elementów, gdy nie stosu. | Liczba całkowita z zakresu od 16 do 256 |
stackIconSize | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
displayName | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
autoListFlags | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
folderFlags | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
taskFlags | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
<viewInfo> elementów podrzędnych
Elementy podrzędne elementu <viewInfo> określają kolumny wyświetlane w wynikach wyszukiwania Eksploratora Windows oraz sposób grupowania i sortowania wyników. Każdy element podrzędny zawiera uporządkowany zestaw kolumn identyfikowany przez nazwy kanoniczne właściwości systemowych (na przykład System.DisplayName). Jeśli nie zdefiniowano w zapisanym pliku wyszukiwania, wyniki wyszukiwania są wyświetlane z domyślnym zestawem kolumn odpowiednich dla wyświetlanych typów plików.
Pierwiastek | Opis | Wartości |
---|---|---|
visibleColumns | Określa uporządkowaną listę kolumn, które mają być wyświetlane w widoku wyników. Użytkownik może zmienić tę listę. | Dowolna właściwość systemowa. |
frequentlyUsedColumns | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
columnChooserColumns | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
groupBy | Określa pojedynczą właściwość systemową, według której mają być grupowane wyniki. Użytkownik może zmienić tę wartość. | Dowolna właściwość systemowa. |
sortList | Określa uporządkowaną listę kolumn do sortowania wyników według. | Maksymalnie cztery właściwości systemowe. Użytkownik może zmienić tę listę. |
stackList | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
<query>, element
Zapytanie <> element określa atrybuty definiujące sposób wykonywania zapytań dotyczących wyników. Poniższy przykład przedstawia strukturę 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>
...
<zapytania> elementów podrzędnych
W poniższej tabeli opisano elementy podrzędne <zakresu>.
Pierwiastek | Opis | Wartość |
---|---|---|
Dostawców | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
podzapytania | Tylko do użytku wewnętrznego. Nie używaj. | N/a |
Zakres | Identyfikuje lokalizacje do uwzględnienia lub wykluczenia w wyszukiwaniu. | Ścieżka lub znany identyfikator folderu lokalizacji, która ma zostać dołączona lub wykluczona. Ten element może również określić, czy wyszukiwanie powinno zawierać/wykluczać ścieżki podrzędne (płytkie lub głębokie wyszukiwanie). |
kindList | Określa rodzaj plików do wyszukania. | Dowolna wartość System.Kind. |
Warunki | Określa reguły filtrowania wyników. Na przykład wyniki mogą być ograniczone do wiadomości e-mail wysłanych przez lub do określonej osoby. | andCondition, orCondition, notCondition, leafCondition. |
<zakres>, element
Element <zakresu> identyfikuje lokalizacje do uwzględnienia lub wykluczenia z wyszukiwania. Element> zakresu <musi zawierać co najmniej jedną <uwzględnić> element podrzędny obecny i zero lub więcej <wykluczać elementy>. Lokalizacje można określić jako ścieżkę (obsługiwane są zmienne środowiskowe) lub jako znany identyfikator folderu. Ponadto można określić, że każda z tych lokalizacji ma być przeszukiwana głęboko lub płytkia, ustawiając wartość inną niż "true" lub "false" (wartość domyślna to rekursywna). Części dołączonej listy lokalizacji można wykluczyć, określając elementy wykluczania.
Poniżej przedstawiono <zakres> element, który będzie przeszukiwać folder specjalny dokumentów, ale nie jego elementy podrzędne, wolumin "E:" i jego elementy podrzędne, ale nie katalog "E:\windows" lub dowolny z jego elementów podrzędnych:
...
<query>
...
<scope>
<include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
<include path="E:\"/>
<exclude path="E:\Windows" nonRecursive="false"/>
</scope>
...
</query>
...
<kindList, element>
Te elementy definiują związek "rodzaju" elementów, które powinny być wyświetlane w bibliotece. Prawidłowe wartości to:
- kalendarz
- komunikacja
- kontakt
- dokument
- karmić
- folder
- gra
- instantmessage
- dziennik
- łącze
- film
- muzyka
- nuta
- obraz
- program
- recordedtv
- folder wyszukiwania
- zadanie
- wideo
- webhistory
- przedmiot
- inny
<warunków>, element
Warunki to filtry, względem których są porównywane wyniki wyszukiwania. Można na przykład filtrować wyniki spełniające określone kryteria, takie jak nazwa autora lub rozmiar pliku. Zestaw warunków jest wbudowany w pojedyncze drzewo warunków z gałęziami logicznymi AND, OR i NOT.
Poniższy przykład przedstawia strukturę warunku <> elementu.
...
<query>
...
<conditions>
<condition type="" ...>
<attributes>
<attribute attributeID="" .../>
</attributes>
</condition>
</conditions>
</query>
...
Typ warunku może być jednym z następujących elementów:
Typ | Opis | Dostępne atrybuty |
---|---|---|
andCondition | Połączenie dwóch lub większej liczby warunków podrzędnych | N/a |
orCondition | Odejmowanie dwóch kolejnych warunków podrzędnych | N/a |
notCondition | Negacja warunku podrzędnego | N/a |
leafCondition | Porównuje właściwość z wartością | property, propertyType, operator, value, valuetype |
Atrybuty elementu <leafCondition> identyfikują właściwości i wartości, względem których są filtrowane wyniki.
Przykład: <warunków>, element
Poniższy przykład filtruje wyniki dla wszystkich nieprzeczytanych elementów utworzonych przez Johna. Oznacza to, że właściwość System.IsRead ma wartość false, a ciąg "john" pojawia się we właściwościach System.Author lub 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>, element
Właściwości <> opisuje właściwości samego zapisanego wyszukiwania. Zapisane pliki wyszukiwania obsługują cztery właściwości: <author>, <kind>, <description>i <tagów>. Są one przeznaczone tylko do użytku wewnętrznego.
Pełna specyfikacja formatu pliku search-ms
Poniżej przedstawiono przykład pełnego kodu XML dla zapisanego pliku wyszukiwania.
<?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>
Przykłady zapisanych wyszukiwań
Poniżej przedstawiono przykłady plików *.search-ms.
Ostatnie 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>
Ostatnie pliki 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>
Ostatnio udostępnione przez 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>