Utilisation de la syntaxe de requête avancée par programmation
la syntaxe de requête avancée (AQS) est la syntaxe de requête par défaut utilisée par Windows recherche pour interroger l’index et affiner et limiter les paramètres de recherche. AQS est utilisé par les développeurs pour créer des requêtes par programme (et par les utilisateurs pour affiner leurs paramètres de recherche). le AQS canonique a été introduit dans Windows 7 et doit être utilisé dans Windows 7 et versions ultérieures pour générer par programmation des requêtes AQS.
Cette rubrique est organisée comme suit :
- À propos de la syntaxe de requête avancée
- Utilisation de mots clés dans les langues locales
- syntaxe de requête avancée canonique dans Windows 7
- Restrictions d’étendue
- Ressources supplémentaires
- Rubriques connexes
À propos de la syntaxe de requête avancée
Une requête se compose de requêtes de base connectées avec et, ou, et non, comme indiqué dans l’exemple de syntaxe suivant :
<query> ::=
<basic query>
| ( <query> )
| <query> AND <query>
| <query> <query> // Same as <query> AND <query>
| <query> OR <query>
| NOT <query>
Notes
AQS ne respecte pas la casse, à l’exception de AND, OR et NOT, qui doit être en majuscules.
Si une requête a deux ou plusieurs utilisations de et ou ou, elles sont liées de gauche à droite, qu’il s’agisse de et ou ou. Autrement dit, la requête, « Apple et Poir ou prune », est interprétée comme si elle était écrite comme « (Apple et Poir) ou prune », et la requête, « Apple ou Poir et Plum », sera interprétée comme si elle était écrite comme « (Apple ou Poir) et prune ». Par conséquent, si un document contient le mot Plum, mais ni Apple, ni Poirier, la première requête le retourne, contrairement à la deuxième requête. Par conséquent, nous vous recommandons d’utiliser des parenthèses explicites pour toute requête qui mélange et et ou pour éviter les erreurs ou les interprétations erronées.
Une requête de base recherche les éléments qui répondent à une restriction sur une propriété. La seule partie obligatoire d’une requête de base est la valeur de la restriction ou de la recherche. si vous ne spécifiez pas de propriété, Windows recherche effectue une recherche dans toutes les propriétés. représente la restriction de recherche.
Les formulaires suivants pour une requête de base sont valides :
<basic query> ::=
<prop>:<basic restr>
| <restr>
Une propriété est désignée par un mot clé tel que auteur ou taille, ou par un nom de propriété canonique tel que System. DateModified. Les formulaires valides pour une propriété sont les suivants :
<prop> ::=
<canonical property name>
| <property label in UI language>
Un opérateur indique une opération telle que < ou =. Pour obtenir la liste des opérateurs valides, consultez la section opérateurs de requête plus loin dans cette rubrique.
Une restriction de base est une restriction simple sur une propriété qui peut être écrite sans parenthèses :
<basic restr> ::=
<value>
| <op><value>
| NOT <basic restr>
| ( <restr> )
Une restriction est une valeur de recherche telle qu’une valeur numérique ou une valeur de chaîne, éventuellement avec un opérateur. Les formulaires valides pour une restriction sont les suivants :
<restr> ::=
<basic restr>
| <restr> AND <restr>
| <restr> <restr> // Same as <restr> AND <restr>
| <restr> OR <restr>
si vous ne spécifiez pas d’opérateur, Windows recherche choisit l’opérateur le plus approprié pour votre requête :
- Pour une propriété de type chaîne, _ l' _ opérateur COP Word STARTSWITH $< est supposé.
- Pour toutes les autres propriétés, l' _ opérateur COP EQUAL = est supposé.
Pour l’utilisation par programme de AQS, nous vous recommandons de toujours disposer d’un opérateur explicite. Le formulaire valide pour la recherche d’une valeur simple ou d’une plage de valeurs est le suivant :
<value> ::=
<simplevalue>
| <simplevalue> .. <simplevalue>
Une valeur simple peut être constituée de l’un des types suivants :
<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>
Exemples
Une requête qui recherche un document contenant la phase « dernier trimestre », créée par Theresa ou Lee, et enregistrée dans le dossier MyDocs, combine trois requêtes de base comme suit :
"last quarter" author:(theresa OR lee) folder:MyDocs
Les trois requêtes de base sont les suivantes :
- « dernier trimestre »
- Auteur : (Theresa ou Lee)
- dossier : MyDocs
Une requête de base qui utilise la syntaxe canonique est la suivante :
System.Size:>1kb
Propriétés
les propriétés sont référencées par un mot clé, qui peut être un nom de propriété canonique dans Windows 7 et versions ultérieures. AQS dans l’interface utilisateur Windows pouvez utiliser l’étiquette au lieu du nom de propriété canonique, tel que auteur au lieu de System. author. dans Windows Vista et versions antérieures, il était possible d’utiliser des étiquettes en anglais quelle que soit la langue de l’interface utilisateur. dans Windows 7 et versions ultérieures, Windows recherche reconnaît uniquement les mots clés dans la langue actuelle de l’interface utilisateur par défaut.
Prise en charge des propriétés personnalisées
dans Windows Vista et versions antérieures, les propriétés personnalisées n’étaient pas disponibles dans AQS. dans Windows 7 et versions ultérieures, AQS fonctionne avec des propriétés personnalisées qui sont inscrites auprès du système de propriétés. Pour plus d’informations sur la création de propriétés personnalisées, consultez système de propriétés.
Propriétés DateTime dans Windows 8
à partir de Windows 8, les propriétés DateTime (comme System. DateModified) prennent en charge le format de date et d’heure canonique spécifié par ISO-8601, en incluant éventuellement le fuseau horaire UTC.
Windows 8 et versions antérieures, date-heure sans fuseau horaire UTC : YYYY - MM - jjthh:MM:ss
Ce format spécifie une heure locale, quels que soient les paramètres régionaux utilisateur ou système.
Windows 8, date-heure avec fuseau horaire UTC : YYYY - MM - jjthh:MM:ssTZD
Ce format spécifie une heure au fuseau horaire UTC spécifié.
Utilisation de mots clés dans les langues locales
dans Windows 7 et versions ultérieures, les mots clés mnémoniques fonctionnent uniquement dans la langue du système, tels que les mots clés allemands uniquement sur un système d’exploitation allemand et les mots clés en anglais uniquement sur un système d’exploitation anglais. System. Author est un mot clé canonique et la valeur mnémonique pour la propriété System. Author est Author, par exemple. l’introduction des mots clés canoniques compense le fait que les mots clés mnémoniques anglais ne sont plus reconnus universellement sur tous les systèmes d’exploitation, quelle que soit la langue, comme c’était le cas dans Windows Vista et versions antérieures.
Notes
dans Windows 7 et versions ultérieures, Windows recherche reconnaît les mots clés dans la langue par défaut actuelle uniquement, et non en anglais, sauf si l’anglais est la valeur par défaut actuelle. Nous recommandons que les développeurs utilisent toujours la syntaxe canonique afin que leur application n’ait pas de problèmes de langue avec les mots clés.
syntaxe de requête avancée canonique dans Windows 7
la syntaxe canonique a été introduite pour les mots clés dans Windows 7. Un exemple de requête avec une propriété canonique est System.Message.FromAddress:=me@microsoft.com . lors du codage de requêtes dans des applications qui s’exécutent sur Windows 7 et versions ultérieures, vous devez utiliser la syntaxe canonique pour générer par programmation des requêtes AQS. Si vous n’utilisez pas la syntaxe canonique et que votre application est déployée dans une langue locale ou d’interface utilisateur différente de celle du code de l’application, vos requêtes ne seront pas interprétées correctement.
Les conventions pour la syntaxe de mot clé canonique sont les suivantes :
- La syntaxe canonique d’une propriété est son nom canonique, tel que
System.Photo.LightSource. Les noms canoniques ne respectent pas la casse. - La syntaxe canonique pour les opérateurs booléens se compose des mots clés AND, OR et NOT, en majuscules.
- Les opérateurs <, >, =, et ainsi de suite, ne sont pas localisés et font donc également partie de la syntaxe canonique.
- Si une propriété
Pa des valeurs énumérées ou des plages nommées N ₁ à l’aide de NK, la syntaxe canonique pour la valeur ou la plage i est le nom canonique de P, suivi du caractère # , suivi de N I, comme illustré dans l’exemple suivant :System.Photo.LightSource#Daylight,System.Photo.LightSource#StandardA, et ainsi de suite.
- Pour un type sémantique défini T avec des valeurs ou des plages nommées N ₁ à l’aide de NK, la syntaxe canonique pour la valeur ou la plage i est le nom canonique de T, suivi du caractère # , suivi de N i, comme illustré dans l’exemple suivant :
System.Devices.LaunchDeviceStageFromExplorer:=System.StructuredQueryType.Boolean#True
- Pour les valeurs littérales telles que des mots ou des expressions, la syntaxe canonique est la même que la syntaxe normale. Voici quelques exemples de requêtes avec des valeurs littérales dans la syntaxe canonique :
System.Author:sanjaySystem.Keywords:"Animal"System.FileCount:>100
Notes
il n’existe aucune syntaxe canonique pour les nombres dans Windows 7 et versions ultérieures. Étant donné que les formats à virgule flottante varient selon les paramètres régionaux, l’utilisation d’une requête canonique qui implique une constante à virgule flottante n’est pas prise en charge. les constantes entières, en revanche, peuvent être écrites en utilisant uniquement des chiffres (pas de séparateurs pour les milliers) et peuvent être utilisées en toute sécurité dans des requêtes canoniques dans Windows 7 et versions ultérieures.
Exemples
Le tableau suivant présente quelques exemples de propriétés canoniques et la syntaxe permettant de les utiliser.
| Type de propriété canonique | Exemple | Syntax |
|---|---|---|
| Valeur de chaîne | System.Author |
La valeur de chaîne est recherchée dans la propriété auteur : System.Author:Jacobs |
| Plage d’énumération | System. Priority | La propriété Priority peut avoir une plage de valeurs numériques :System.Priority:System.Priority#High |
| Booléen | System. IsDeleted |
Les valeurs booléennes peuvent être utilisées avec n’importe quelle propriété booléenne :System.IsDeleted:System.StructuredQueryType.Boolean#True, et System.IsDeleted:System.StructuredQueryType.Boolean#False |
| Numérique | System. Size |
Il n’est pas possible d’écrire en toute sécurité une requête canonique qui implique une constante à virgule flottante, car les formats à virgule flottante varient selon les paramètres régionaux. Les entiers doivent être écrits sans séparateurs pour les milliers. Par exemple :System.Size:<12345 |
Pour plus d’informations sur les propriétés canoniques et le système de propriétés, consultez Propriétés système. Vous pouvez également faire référence aux fichiers d’en-tête publics.
Opérateurs de requête
Si une propriété, p, a plusieurs valeurs pour un élément, une requête AQS pour p : retourne l’élément si a la valeur true pour au moins l’une des valeurs. ( représente une restriction.)
La syntaxe indiquée dans le tableau ci-dessous se compose d’un opérateur, d’un symbole d’opérateur, d’un exemple et d’une description d’exemple. L’opérateur et le symbole peuvent être utilisés dans n’importe quel langage et inclus dans n’importe quelle requête. N’utilisez pas les _ opérateurs spécifiques à l’application COP implicite ou COP _ _ . Certains des opérateurs ont des symboles interchangeables.
| Opérateur | Symbole | Exemple | Description |
|---|---|---|---|
| COP_EQUAL | = |
System. FileExtension : = ".txt" |
La valeur est la chaîne " .txt " . |
| COP_NOTEQUAL | ≠ - <> NOT - - |
System. Kind : image ≠ System. photo. DateTaken :-[] ¹ System. Kind : < > image System. Kind : pas d’image System. Kind :--image |
La propriété System. Kind n’est pas une image. La propriété System. photo. DateTaken a une valeur. La propriété System. Kind n’est pas une image. La propriété System. Kind n’est pas une image. Les opérateurs double NOT appliqués à la même propriété n’annulent pas. Par conséquent, System. Kind :--image est équivalent à System. Kind :-image et System. Kind : pas Picture. |
| COP_LESSTHAN | < |
System. taille : 1 < Ko |
Cette valeur est inférieure à 1 Ko. |
| COP_GREATERTHAN | > |
System. ItemDate : > System. StructuredQueryType. DateTime # Today |
Cette valeur est supérieure à la date du jour. |
| COP_LESSTHANOREQUAL | <= ≤ |
System. Size : < = 1 Ko |
Cette valeur est inférieure ou égale à 1 Ko. |
| COP_GREATERTHANOREQUAL | >= ≥ |
System. Size : > = 1 Ko |
Cette valeur est supérieure ou égale à 1 Ko. |
| COP_VALUE_STARTSWITH | ~< |
System. FileName : ~ < " Introduction à C++" |
Recherche les éléments dont le nom de fichier commence par les caractères de l' " initiation C++ " . |
| COP_VALUE_ENDSWITH | ~> |
System. photo. CameraModel : ~ > non |
Recherche les éléments dont la valeur de propriété se termine par les caractères non. |
| COP_VALUE_CONTAINS | ~= ~~ |
System. Subject. ~ = arrondi System. Search. AutoSummary : ~ ~ Round |
Recherche un message qui a cette chaîne dans l’objet et correspond aux " règles d'arrondi g, " par exemple. Recherche tous les éléments avec un résumé qui contient les caractères arrondis. |
| COP_VALUE_NOTCONTAINS | ~! |
System. Author : ~ ! " Sanjay" |
Recherche les auteurs qui n’ont pas de séquence " de caractèresSanjay " . |
| COP_DOSWILDCARDS | ~ |
System. FileName : ~ " MIC ? osoft W * d" |
Recherche les fichiers dont le nom de fichier commence par MIC, suivi d’un caractère, suivi de osoft w, suivi de tous les caractères se terminant par d. Le point d’interrogation, ?, les caractères et * ne sont pas interprétés littéralement, et fonctionnent comme des caractères génériques de type DOS :
|
| COP_WORD_EQUAL | $= $$ |
System. StructuredQuery. Virtual. from : $ = " Sanjay Jacobs" |
pour Windows 7 et versions ultérieures. Recherche l’expression " Sanjay Jacobs " dans toutes les propriétés. Le mot Sanjay doit être suivi du mot Jacobs. |
| COP_WORD_STARTSWITH | $< |
System. Author : $<"San" System.Filename:$<"Micro Exe" |
pour Windows 7 et versions ultérieures. Recherche un élément où Author contient un mot commençant par les caractères " San " . Recherche tout fichier dans lequel le nom de fichier contient un mot commençant par micro, suivi d’un mot commençant par exe. |
¹ les crochets vides ( [ ] ) indiquent « aucune valeur ».
Pour les propriétés de type chaîne, l’opération par défaut est COP _ Word _ commence _ par ou COP _ Word _ EQUAL.
Valeurs de requête
Le tableau suivant répertorie des exemples utiles de restriction des valeurs de requête.
| Valeur/symbole | Exemples | Description |
|---|---|---|
| String | auto |
Séquence de caractères qui peut être recherchée. La chaîne ne doit pas contenir d’espaces blancs ou de combinaisons de caractères qui font partie de la syntaxe. Cet exemple recherche un mot commençant par auto. |
| Chaîne entre guillemets "" | "Conclusions : validez " " l' " " " " équipe Blue Team" |
Toute séquence de caractères. La chaîne n’est pas interprétée dans le cadre de la syntaxe. Les guillemets peuvent être inclus dans une requête s’ils sont doublés. Cet exemple recherche l' " " équipe bleue. |
| Integer | 5678 |
Utilisez uniquement des chiffres pour les entiers. N’utilisez pas de séparateurs pour les milliers. |
| Nombre à virgule flottante | 5678,1234 |
Étant donné que les formats à virgule flottante varient selon les paramètres régionaux, une requête canonique ne peut pas utiliser une constante à virgule flottante. L’utilisation de la syntaxe canonique avec des nombres à virgule flottante n’est pas sécurisée pour la localisation. |
| Booléen true / false | System. IsRead : = System. StructuredQueryType. Boolean # true System. IsEncrypted :-System. StructuredQueryType. Boolean # False |
Valeur booléenne true . Valeur booléenne false . |
| [] | System. Keywords : = [] |
Les crochets vides indiquent qu’il n’y a aucune valeur. Cet exemple recherche tous les éléments qui n’ont pas été balisés. |
| Dates absolues | System. ItemDate : 1/26/2010 SystemDateModified 10/15/2002 19:00 |
Recherche les éléments dont la date est le 26 janvier 2010. Recherche les éléments qui ont été modifiés le 15 octobre 2002 entre les heures 19:00:00 et 19:00:59. [!Note] |
| Dates relatives | System. ItemDate : System. StructuredQueryType. DateTime # Today System. DateAcquired : System. StructuredQueryType. DateTime # NextMonth System. message. DateReceived : System. StructuredQueryType. DateTime # LastYear |
Recherche des éléments avec la date du jour. Recherche les éléments dont la date est le mois suivant. Recherche les éléments dont la date est l’année dernière. [!Note] |
| .. | System. ItemDate : 11/05/04.. 11/10/04 System. Size : 5 Ko.. 10 Ko |
Les doubles périodes indiquent une plage de valeurs. Recherche les éléments dont la date est comprise entre 11/05/04 et 11/10/04 inclus. Recherche les éléments d’une taille comprise entre 5 et 10KO. |
Restrictions d’étendue
Les utilisateurs peuvent limiter l’étendue de leurs recherches à des emplacements de dossiers ou des magasins de données spécifiques. par exemple, si vous utilisez plusieurs comptes de messagerie et que vous souhaitez limiter une requête à microsoft Outlook ou microsoft Outlook Express, vous pouvez utiliser System.Search.Store:mapi ou System.Search.Store:oe respectivement. Le tableau suivant présente quelques exemples de la manière de limiter une recherche par magasin de données.
| Limiter la recherche par le magasin de données | Mot clé | Exemple |
|---|---|---|
| Fichiers | fichier | System. Search. Store : fichier |
| Outlook | Protocole | System. Search. Store : MAPI |
| Outlook Express | oe | System. Search. Store : oe |
| Fichiers hors connexion | CSC | System. Search. Store : CSC |
| Dossier spécifique sur le lecteur local | dossier | System. ItemFolderNameDisplay : C : " \ mondossier" |
Ressources supplémentaires
- dans Windows 7 et versions ultérieures, une option de menu contextuel peut être disponible selon qu’une condition AQS est remplie ou non. Pour plus d’informations, consultez « obtention du comportement dynamique pour les verbes statiques à l’aide de la syntaxe de requête avancée » dans création de gestionnaires de menus contextuels.
- Les requêtes AQS peuvent être limitées à des types de fichiers spécifiques, connus sous le nom de types de fichiers. Pour plus d’informations, consultez types de fichiers et associations. Pour obtenir une documentation de référence sur les propriétés, consultez System. Kindet System. KindText.