Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Расширенный синтаксис запросов (AQS) — это синтаксис запросов по умолчанию, используемый поиском Windows для запроса индекса и уточнения и узких параметров поиска. AQS используется разработчиками для программного создания запросов (и пользователей для ограничения параметров поиска). Канонические AQS появились в Windows 7 и должны использоваться в Windows 7 и более поздних версиях для программного создания запросов AQS.
Этот раздел организован следующим образом:
- О расширенном синтаксисе запросов
- Использование ключевых слов на локальных языках
- Канонический расширенный синтаксис запросов в Windows 7
- Ограничения области
- Дополнительные ресурсы
- Связанные статьи
О расширенном синтаксисе запросов
Запрос состоит из основных запросов, связанных с AND, OR и NOT, как показано в следующем примере синтаксиса:
<query> ::=
<basic query>
| ( <query> )
| <query> AND <query>
| <query> <query> // Same as <query> AND <query>
| <query> OR <query>
| NOT <query>
Примечание.
AQS не учитывает регистр, за исключением AND, OR и NOT, которые должны быть написанными буквами верхнего регистра.
Если запрос имеет два или более использования AND или OR, они привязываются слева направо независимо от того, имеет ли он значение AND или OR. То есть запрос "apple AND pear OR plum" будет интерпретирован как "(яблоко И груша) ИЛИ слива", и запрос "apple OR pear AND plum" будет интерпретирован как "(яблоко ИЛИ груша) И слива". Поэтому если документ содержит слово слива, но ни яблоко, ни груша, первый запрос вернет его, но второй запрос не будет. Поэтому мы рекомендуем использовать явные скобки для любого запроса, который смешивает AND и OR, чтобы избежать ошибок или неправильного понимания.
Базовый запрос ищет элементы, удовлетворяющие ограничению для свойства. Единственной необходимой частью базового запроса является ограничение или значение поиска. Если свойство не указано, поиск Windows выполняет поиск по всем свойствам. <restr> представляет ограничение поиска.
Допустимы следующие формы для базового запроса:
<basic query> ::=
<prop>:<basic restr>
| <restr>
Свойство определяется ключевым словом, таким как автор или размер, или каноническим именем свойства, например System.DateModified. Допустимые формы для свойства:
<prop> ::=
<canonical property name>
| <property label in UI language>
Оператор указывает операцию, например < или =. Список допустимых операторов см. в разделе "Операторы запросов" далее в этом разделе.
Базовое ограничение — это простое ограничение для свойства, которое можно записать без скобок:
<basic restr> ::=
<value>
| <op><value>
| NOT <basic restr>
| ( <restr> )
Ограничение — это значение поиска, например числовой или строковое значение, при необходимости с оператором. Допустимые формы ограничения приведены ниже.
<restr> ::=
<basic restr>
| <restr> AND <restr>
| <restr> <restr> // Same as <restr> AND <restr>
| <restr> OR <restr>
Если оператор не указан, поиск Windows выбирает наиболее подходящий оператор для запроса:
- Для строкового свойства предполагается использование оператора COP_WORD_STARTSWITH $<.
- Для всех остальных свойств предполагается оператор COP_EQUAL = .
Для использования AQS в программировании рекомендуется всегда явно указывать оператор. Допустимая форма поиска простого значения или диапазона значений выглядит следующим образом:
<value> ::=
<simplevalue>
| <simplevalue> .. <simplevalue>
Простое значение может состоять из любого из следующих типов:
<simplevalue> ::=
[] // No value, or a null value
| <word> // A sequence of characters without whitespace
| <number> // An integer or a floating point number
| <datetime> // A relative date, or an absolute date and/or time
| <Boolean>
| "..." // A phrase
| <enumeration range>
Примеры
Запрос, который выполняет поиск документа, содержащего этап "последний квартал", созданного Терсой или Ли, и который был сохранен в папке MyDocs, объединяет три основных запроса следующим образом:
"last quarter" author:(theresa OR lee) folder:MyDocs
Ниже приведены три основных запроса:
- "последний квартал"
- автор:(Тереза ИЛИ Ли)
- папка:MyDocs
Базовый запрос, использующий канонический синтаксис:
System.Size:>1kb
Свойства
Свойства ссылаются на ключевое слово, которое может быть каноническим именем свойства в Windows 7 и более поздних версиях. AQS в пользовательском интерфейсе Windows может использовать метку вместо канонического имени свойства, например автора вместо System.Author. В Windows Vista и более ранних версиях можно было использовать английские метки независимо от языка пользовательского интерфейса. В Windows 7 и более поздних версиях поиск Windows распознает ключевые слова только на текущем языке пользовательского интерфейса по умолчанию.
Поддержка настраиваемых свойств
В Windows Vista и более ранних версиях пользовательские свойства недоступны в AQS. В Windows 7 и более поздних версиях AQS работает с пользовательскими свойствами, зарегистрированными в системе свойств. Дополнительные сведения о создании настраиваемых свойств см. в разделе "Система свойств".
Свойства DateTime в Windows 8
По состоянию на Windows 8 свойства DateTime (например , System.DateModified) поддерживают канонический формат даты и времени, указанный ISO-8601, при необходимости включая часовой пояс UTC.
Windows 8 и более ранние версии, формат даты и времени без часового пояса UTC:ГГГГ-ММ-ДДTчч:мм:сс
Этот формат задает локальное время независимо от языкового стандарта пользователя или системы.
Windows 8, дата и время в формате UTC:ГГГГ-ММ-ДДThh:мм:ssTZD
Этот формат указывает время в указанном часовом поясе UTC.
Использование ключевых слов на локальных языках
В Windows 7 и более поздних версиях ключевые слова mnemonic работают только на системном языке, такие как немецкие ключевые слова только в немецкой операционной системе, а также ключевые слова английского языка только в английской операционной системе. System.Author — это каноническое ключевое слово, и мнемоническое значение свойства System.Author — например, Author. Введение канонических ключевых слов сглаживает тот факт, что английские мнемонические ключевые слова больше не являются универсально распознаваемыми во всех операционных системах независимо от языка, как это было в Windows Vista и более ранних версиях.
Примечание.
В Windows 7 и более поздних версиях поиск Windows распознает ключевые слова только на текущем языке по умолчанию, а не на английском языке, если только английский язык не является текущим по умолчанию. Мы рекомендуем разработчикам всегда использовать канонический синтаксис, чтобы их приложение не было проблем с языком с ключевыми словами.
Канонический расширенный синтаксис запросов в Windows 7
Канонический синтаксис был представлен для ключевых слов в Windows 7. Пример запроса с каноническим свойством System.Message.FromAddress:[email protected]
. При написании запросов в приложениях, работающих в Windows 7 и более поздних версиях, необходимо использовать канонический синтаксис для программного создания запросов AQS. Если вы не используете канонический синтаксис и приложение развертывается в языковом стандарте или языке пользовательского интерфейса, отличном от языка в коде приложения, ваши запросы не будут интерпретироваться правильно.
Соглашения для канонического синтаксиса ключевых слов приведены следующим образом:
- Канонический синтаксис свойства — это его каноническое имя, например
System.Photo.LightSource
. Канонические имена не учитывает регистр. - Стандартный синтаксис логических операторов состоит из ключевых слов AND, OR и NOT, написанных заглавными буквами.
- Операторы <, >=и т. д. не локализованы и поэтому являются частью канонического синтаксиса.
- Если свойство
P
имеет перечисленные значения или диапазоны с именем N₁ по Nk, канонический синтаксис для I-го значения или диапазона представляется каноническим именем P, за которым следует символ #, а затем N_I, как показано в следующем примере.-
System.Photo.LightSource#Daylight
,System.Photo.LightSource#StandardA
и т. д.
-
- Для определенного семантического типа T со значениями или диапазонами, названными N₁ через Nₖ, каноническим синтаксисом для значения или диапазона I является каноническое имя T, а затем символ #, а затем NI, как показано в следующем примере.
System.Devices.LaunchDeviceStageFromExplorer:=System.StructuredQueryType.Boolean#True
- Для литеральных значений, таких как слова или фразы, канонический синтаксис совпадает с обычным синтаксисом. Примеры запросов с литеральными значениями в каноническом синтаксисе:
System.Author:sanjay
System.Keywords:"Animal"
System.FileCount:>100
Примечание.
Канонический синтаксис для чисел в Windows 7 и более поздних версиях отсутствует. Так как форматы с плавающей запятой зависят от языковых стандартов, использование канонического запроса, включающего константу с плавающей запятой, не поддерживается. Целые константы, напротив, можно записывать только с помощью цифр (без разделителей для тысяч) и безопасно использовать в эквивалентных запросах в Windows 7 и более поздних версиях операционной системы.
Примеры
В следующей таблице показаны некоторые примеры канонических свойств и синтаксис для их использования.
Тип канонического свойства | Пример | Синтаксис |
---|---|---|
«Строковое значение» |
System.Author |
Строковое значение ищется в свойстве автора: System.Author:Jacobs |
Диапазон перечисления | System.Priority | Свойство приоритета может иметь числовый диапазон значений:System.Priority:System.Priority#High |
Логический |
System.IsDeleted |
Логические значения можно использовать с любым логическим свойством:System.IsDeleted:System.StructuredQueryType.Boolean#True и System.IsDeleted:System.StructuredQueryType.Boolean#False |
числовые; |
System.Size |
Невозможно безопасно написать канонический запрос, который включает константу с плавающей запятой, так как форматы с плавающей запятой зависят от языковых стандартов. Целые числа должны быть записаны без разделителей для тысяч. Например:System.Size:<12345 |
Дополнительные сведения о канонических свойствах и системе свойств, как правило, см. в разделе "Свойства системы". Кроме того, обратитесь к общедоступным файлам заголовков.
Операторы запроса
Если свойство p имеет несколько значений для некоторого элемента, запрос AQS для p:<restr> возвращает элемент, если <restr> имеет значение true по крайней мере для одного из значений. (<restr> представляет ограничение.)
Синтаксис, указанный в следующей таблице, состоит из оператора, символа оператора, примера и примера описания. Оператор и символ могут использоваться на любом языке и включаться в любой запрос. Не используйте операторы COP_IMPLICIT или COP_APPLICATION_SPECIFIC. Некоторые операторы имеют взаимозаменяемые символы.
Оператор | Символ | Пример | Описание |
---|---|---|---|
COP_EQUAL | = |
System.FileExtension:=".txt" |
Значением является строка ".txt". |
COP_NOTEQUAL | ≠ - <> НЕ - - |
System.Kind:≠картинка System.Photo.DateTaken:-[]¹ System.Kind:<>изображение Система.Тип:НЕ изображение System.Kind:- -картина |
Свойство System.Kind не является рисунком. Свойство System.Photo.DateTaken имеет значение. Свойство System.Kind не является рисунком. Свойство System.Kind не является рисунком. Двойные операторы NOT, применяемые к тому же свойству, не аннулируют друг друга. Таким образом, System.Kind:- -picture эквивалентно System.Kind:-picture, System.Kind:NOT picture. |
COP_LESSTHAN | < |
System.Size:<1кб |
Это значение меньше 1 КБ. |
COP_GREATERTHAN | > |
System.ItemDate:>System.StructuredQueryType.DateTime#Сегодня |
Это значение больше, чем сегодня. |
COP_LESSTHANOREQUAL |
<= ≤ |
System.Size:<=1 КБ |
Это значение меньше или равно 1 КБ. |
Больше или равно |
>= ≥ |
System.Size:>=1 кб |
Это значение равно или больше 1 КБ. |
ЗНАЧЕНИЕ_НАЧИНАЕТСЯ_С | ~< |
System.FileName:~<"C++ Primer" |
Находит элементы, в которых имя файла начинается с символов "C++ Primer". |
COP_VALUE_ENDSWITH | ~> |
System.Photo.CameraModel:~>non |
Находит элементы, в которых значение свойства заканчивается символами non. |
ЗНАЧЕНИЕ_COP_СОДЕРЖИТ | ~= ~~ |
System.Subject.~=округлить System.Search.Autosummary:~~round |
Находит сообщение, которое содержит эту строку в заголовке, и, например, будет соответствовать "ground rules". Находит все элементы с автосводкой, содержащей символы round. |
ЗНАЧЕНИЕ_COP_НЕ_СОДЕРЖИТСЯ | ~! |
System.Author:~!" sanjay" |
Находит авторов, у которых нет последовательности символов "sanjay" в них. |
COP_DOSWILDCARDS | ~ |
System.FileName:~"Mic?osoft W*d" |
Находит файлы, у которых имя начинается с Mic, после которого следует какой-то символ, затем osoft w и далее любые символы, заканчивающиеся на d. Знак вопроса и * символы не интерпретируются буквально и работают, как подстановочные знаки в стиле DOS:
|
КОП_СЛОВО_РАВНО | $= $$ |
System.StructuredQuery.Virtual.From:$="Sanjay Jacobs" |
Для Windows 7 и более поздних версий. Находит фразу "Санджай Джейкобс" во всех свойствах From. За словом Санджай должно следовать слово Джейкобс. |
COP_WORD_STARTSWITH | $< |
System.Author:$<"San" System.Filename:$<"Micro Exe" |
Для Windows 7 и более поздних версий. Находит любой элемент, в котором автор содержит слово, начиная с символов "San". Находит любой файл, в имени которого есть слово, начинающееся с микро, за которым следует слово, начинающееся с exe. |
¹ Пустые квадратные скобки ([]) указывают "нет значения".
Для строковых свойств операция, выполняемая по умолчанию, — это COP_WORD_STARTS_WITH или COP_WORD_EQUAL.
Значения запросов
Полезные примеры ограничения значений запросов перечислены в следующей таблице.
Значение или символ | Примеры | Описание |
---|---|---|
Строка | авто |
Любая последовательность символов, которые можно искать. Строка не должна содержать пробелы или сочетания символов, которые являются частью синтаксиса. В этом примере выполняется поиск слова, начинающегося с авто. |
В кавычках строка "" | Выводы: действительные Команда "синяя" |
Любая последовательность символов. Строка не интерпретируется как часть синтаксиса. Кавычки можно включить в запрос, если они удвоены. В этом примере выполняется поиск команды «синяя». |
Целое | 5678 |
Используйте только цифры для целых чисел. Не используйте разделители для тысяч. |
Число с плавающей запятой | 5678.1234 |
Так как форматы с плавающей запятой зависят от языковых стандартов, канонический запрос не может использовать константу с плавающей запятой. Использование канонического синтаксиса с числами с плавающей запятой не является безопасным для локализации. |
истина/ложь | System.IsRead:=System.StructuredQueryType.Boolean#True System.IsEncrypted:-System.StructuredQueryType.Boolean#False |
Булево значение TRUE. Логическое значение FALSE. |
[] | System.Ключевые_слова:=[] |
Пустые квадратные скобки указывают на отсутствие значения. В этом примере обнаруживаются все элементы, которые не были помечены. |
Абсолютные даты | System.ItemDate:1/26/2010 СистемнаяДатаИзменения 15.10.2002 19:00 |
Находит элементы с датой 26 января 2010 года. Находит элементы, которые были изменены 15 октября 2002 года между часами 19:00:00 и 19:00:59.
Примечание. |
Относительные даты | System.ItemDate:System.StructuredQueryType.DateTime#Сегодня System.DateAcquired:System.StructuredQueryType.DateTime#СледующийМесяц System.Message.DateReceived:System.StructuredQueryType.DateTime#LastYear |
Находит элементы с сегодняшней датой. Находит элементы с датой в следующем месяце. Находит элементы с датой в прошлом году.
Примечание. |
.. | System.ItemDate:11/05/04..11/10/04 System.Size:5kb.. 10 КБ |
Двойные периоды указывают диапазон значений. Находит элементы с датой от 11.05.04 до 11.10.04 включительно. Находит элементы размером от 5 до 10 КБ. |
Ограничения области
Пользователи могут ограничить область поиска определенными расположениями папок или хранилищами данных. Например, если вы используете несколько учетных записей электронной почты и хотите ограничить запрос microsoft Outlook или Microsoft Outlook Express, можно использовать System.Search.Store:mapi
или System.Search.Store:oe
соответственно. В следующей таблице показаны некоторые примеры ограничения поиска по хранилищу данных.
Ограничение поиска по хранилищу данных | Ключевое слово | Пример |
---|---|---|
Файлы | файл | System.Search.Store:файл |
Outlook | мапи | System.Search.Store:mapi |
Outlook Express | oe | System.Search.Store:oe |
Автономные файлы | csc | System.Search.Store:csc |
Определенная папка на локальном диске | папку | System.ItemFolderNameDisplay:C:"\МояПапка" |
Дополнительные ресурсы
- В Windows 7 и более поздних версиях элемент контекстного меню может появиться в зависимости от того, выполнено ли условие AQS. Дополнительные сведения см. в разделе "Получение динамического поведения для статических команд с помощью расширенного синтаксиса запроса" в разделе "Создание обработчиков контекстного меню".
- Запросы AQS могут быть ограничены определенными типами файлов, которые называются типами файлов. Дополнительные сведения см. в разделе "Типы файлов и связи". Документацию по свойствам см. в System.Kind и System.KindText.
Связанные темы