Сохраненный формат файла поиска
В Windows Vista и более поздних версиях пользователи могут сохранять поисковые запросы в виде папки поиска, созданной XML-файлом, в котором хранится запрос в форме, которая может использоваться подсистемой поиска Windows. В этом разделе описывается формат файла (*.search-ms) и содержит следующие разделы:
- обзор сохраненных поисковых запросов
- элемент <viewInfo>
- < > элемента
- <свойства> элемент
- полная спецификация формата файла search-ms
- примеры сохраненных поисковых
Обзор сохраненных поисковых запросов
Пользователи могут сохранить поисковый запрос как папку поиска, виртуальную папку, отображаемую в проводнике Windows в папке "Поиск". Открытие папки поиска запускает сохраненный поиск и отображает результаты up-to-date. Сохраненный файл поиска сохраняет запрос в формате поиска Windows, указывая, что искать, где искать и как представить результаты.
Сохраненный поиск создается из XML-файла (*.search-ms) в папке %userprofile%\Search. Данные делятся на три основных элемента в XML-файле:
- <viewInfo> указывает сведения о презентации
- <запроса> указывает (сведения о поисковых запросах
- <свойства> указывают свойства самого файла *.search-ms
В следующем примере показана высокоуровневая структура сохраненного файла поиска.
<?xml version="1.0"?>
<persistedQuery version="1.0">
<viewInfo ...>
...
</viewInfo>
<query>
...
</query>
<properties>
...
</properties>
</persistedQuery>
Элемент> viewInfo <
Элемент <viewInfo> указывает, как результаты представлены пользователю. В следующем примере показана структура элемента.
...
<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>
В следующей таблице описываются атрибуты элемента <viewInfo>.
Атрибут | Описание | Значения |
---|---|---|
viewMode | Указывает представление папки. | Сведения | Значки | Плитки |
значокSize | Определяет размер значков и эскизов по умолчанию для элементов, если не стек. | Целое число от 16 до 256 |
stackIconSize | Только для внутреннего использования. Не используйте. | n/a |
displayName | Только для внутреннего использования. Не используйте. | n/a |
autoListFlags | Только для внутреннего использования. Не используйте. | n/a |
folderFlags | Только для внутреннего использования. Не используйте. | n/a |
taskFlags | Только для внутреннего использования. Не используйте. | n/a |
<viewInfo> дочерних элементов
Дочерние элементы элемента представления <viewInfo> указывают, какие столбцы отображаются в результатах поиска Проводника Windows и как сгруппированы и отсортированы результаты. Каждый дочерний элемент содержит упорядоченный набор столбцов, определяемый каноническими именами системных свойств (например, System.DisplayName). Если он не определен в сохраненном файле поиска, результаты поиска отображаются с набором столбцов по умолчанию, подходящих для отображаемых типов файлов.
Элемент | Описание | Значения |
---|---|---|
visibleColumns | Указывает упорядоченный список столбцов, отображаемых в представлении результатов. Пользователь может изменить этот список. | Любое системное свойство. |
частоUsedColumns | Только для внутреннего использования. Не используйте. | n/a |
columnChooserColumns | Только для внутреннего использования. Не используйте. | n/a |
groupBy | Указывает одно системное свойство, с помощью которого следует сгруппировать результаты. Пользователь может изменить это значение. | Любое системное свойство. |
sortList | Указывает упорядоченный список столбцов для сортировки результатов по. | До четырех системных свойств. Пользователь может изменить этот список. |
stackList | Только для внутреннего использования. Не используйте. | n/a |
Элемент> запроса <
Элемент> запроса <указывает атрибуты, определяющие способ запроса результатов. В следующем примере показана структура элемента.
...
<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>
...
запрос <дочерних элементов>
В следующей таблице описываются дочерние элементы области <>.
Элемент | Описание | Ценность |
---|---|---|
Поставщиков | Только для внутреннего использования. Не используйте. | n/a |
вложенные запросы | Только для внутреннего использования. Не используйте. | n/a |
Размах | Определяет расположения для включения или исключения в поиск. | Путь или известный идентификатор папки расположения, который необходимо включить или исключить. Этот элемент также может указать, должен ли поиск включать и исключать дочерние пути (неглубокий или глубокий поиск). |
kindList | Определяет тип файлов для поиска. | Любое значение System.Kind. |
условия | Задает правила фильтрации результатов. Например, результаты могут быть ограничены электронными письмами, отправленными или определенным человеком. | andCondition, orCondition, notCondition, leafCondition. |
Элемент> области <
Элемент> области <определяет расположения для включения или исключения из поиска. Элемент> области <должен содержать по крайней мере один <включать> дочерний элемент и ноль или более <исключить> элементов. Расположения можно указать как путь (поддерживаются переменные среды) или как известный идентификатор папки. Кроме того, каждый из этих расположений можно указать для поиска глубоко или неглубоко, задав значение true или false (по умолчанию рекурсивно). Части включенного списка расположений можно исключить, указав элементы исключения.
Ниже показан элемент> области <, который будет искать в документах специальную папку, но не его дочерние элементы, том "E:" и его дочерние элементы, но не каталог "E:\windows" или любой из его дочерних элементов:
...
<query>
...
<scope>
<include knownFolder="{FDD39AD0-238F-46AF-ADB4-6C85480369C7}" nonRecursive="true"/>
<include path="E:\"/>
<exclude path="E:\Windows" nonRecursive="false"/>
</scope>
...
</query>
...
Элемент> kindList <
Эти элементы определяют объединение "типа" элементов, которые должны отображаться в библиотеке. Допустимые значения:
- календарь
- коммуникация
- контакт
- документ
- Отправить по электронной почте
- кормить
- папка
- игра
- instantmessage
- журнал
- связь
- кинофильм
- музыка
- заметка
- картина
- программа
- recordedtv
- searchfolder
- задача
- видео
- webhistory
- пункт
- другой
элемент> условий <
Условия — это фильтры, с которыми сравниваются результаты поиска. Например, можно фильтровать результаты, соответствующие определенным критериям, таким как имя автора или размер файла. Набор условий встроен в одно дерево условий с логическими ветвями AND, OR и NOT.
В следующем примере показана структура элемента> условия <.
...
<query>
...
<conditions>
<condition type="" ...>
<attributes>
<attribute attributeID="" .../>
</attributes>
</condition>
</conditions>
</query>
...
Тип условия может быть одним из следующих:
Тип | Описание | Доступные атрибуты |
---|---|---|
andCondition | Сочетание двух или более дочерних условий | n/a |
orCondition | Отложение двух из более детских условий | n/a |
notCondition | Отрицание дочернего условия | n/a |
leafCondition | Сравнивает свойство со значением | property, propertyType, operator, value, valuetype |
Атрибуты> элемента <leafCondition определяют свойства и значения результатов отфильтровываются.
Пример: <условия> элемент
В следующем примере результаты фильтруются для всех непрочитанных элементов, созданных Джоном. То есть свойство System.IsRead имеет значение false, а строка "john" отображается в свойствах System.Author или 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>
...
<свойства> элемент
<свойства> элемент описывает свойства сохраненного поиска. Сохраненные файлы поиска поддерживают четыре свойства: <автора>, <типа>, <описания>и <тегов>. Они предназначены только для внутреннего использования.
Полная спецификация формата файла search-ms
Ниже приведен пример полного XML-файла для сохраненного файла поиска.
<?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>
Примеры сохраненных поисков
Ниже приведены примеры файлов *.search-ms.
Последние документы.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>
Последние музыкальные.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>
Недавно предоставлено 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>