Použití rozšířené syntaxe dotazů prostřednictvím kódu programu
Advanced Query Syntax (AQS) je výchozí syntaxe dotazu používaná službou Windows Search k dotazování indexu a upřesnění a zúžení parametrů hledání. AQS používají vývojáři k programovému vytváření dotazů (a uživatelům, aby zúžili parametry hledání). Kanonické AQS bylo zavedeno v operačním systému Windows 7 a musí být používáno ve Windows 7 a novějších verzích k programovému generování dotazů AQS.
Toto téma je uspořádané takto:
-
o rozšířené syntaxe dotazů
- Příklady
- vlastnosti
- použití klíčového slova v místních jazycích
-
Kanonická rozšířená syntaxe dotazů ve Windows 7
- Příklady
- operátory dotazu
- Dotazové hodnoty
- omezení rozsahu
- Další zdroje
- související témata
O rozšířené syntaxi dotazů
Dotaz se skládá ze základních dotazů spojených s operátory AND, OR a NOT, jak je znázorněno v následující ukázkové syntaxi:
<query> ::=
<basic query>
| ( <query> )
| <query> AND <query>
| <query> <query> // Same as <query> AND <query>
| <query> OR <query>
| NOT <query>
Poznámka
AQS nerozlišuje malá a velká písmena, s výjimkou funkce AND, OR a NOT, která musí být ve všech velkých písmenech.
Pokud dotaz používá dvě nebo více použití funkce AND nebo OR, vytvoří vazbu zleva doprava bez ohledu na to, jestli se jedná o operátor AND nebo NEBO. To znamená, že dotaz "jablko A hrušeň NEBO švestka" bude interpretován jako "(jablko A hrušeň) NEBO švestka", a dotaz "jablko NEBO hrušeň A švestka", bude interpretován jako "(jablko NEBO hrušeň) A švestka". Takže pokud dokument obsahuje slovo plum, ale ani jablko, ani hrušeň, první dotaz ho vrátí, ale druhý dotaz ne. Proto doporučujeme použít explicitní závorky pro každý dotaz, který kombinuje operátor AND a OR, abyste se vyhnuli chybám nebo chybné interpretaci.
Základní dotaz vyhledává položky, které splňují omezení týkající se vlastnosti. Jedinou požadovanou částí základního dotazu je omezení nebo hodnota hledání. Pokud nezadáte vlastnost, Windows Search prohledá všechny vlastnosti. <restr> představuje omezení vyhledávání.
Následující formy pro základní dotaz jsou platné:
<basic query> ::=
<prop>:<basic restr>
| <restr>
Vlastnost je určena klíčovým slovem, jako je autor nebo velikost, nebo názvem kanonické vlastnosti, například System.DateModified. Platné formáty pro vlastnost jsou následující:
<prop> ::=
<canonical property name>
| <property label in UI language>
Operátor označuje operaci, například < nebo =. Seznam platných operátorů najdete v části Operátory dotazů dále v tomto tématu.
Základní omezení je jednoduché omezení vlastnosti, která se dá zapsat bez závorek:
<basic restr> ::=
<value>
| <op><value>
| NOT <basic restr>
| ( <restr> )
Omezení je vyhledávací hodnota, například číselná hodnota nebo řetězcová hodnota, volitelně s operátorem. Platné formuláře omezení jsou následující:
<restr> ::=
<basic restr>
| <restr> AND <restr>
| <restr> <restr> // Same as <restr> AND <restr>
| <restr> OR <restr>
Pokud nezadáte operátor, windows Search zvolí nejvhodnější operátor pro váš dotaz:
- U řetězcové vlastnosti se předpokládá operátor COP_WORD_STARTSWITH $<.
- U všech ostatních vlastností se předpokládá COP_EQUAL = operátor.
Pro programové použití AQS doporučujeme vždy použití explicitního operátoru. Platný formulář pro vyhledávání jednoduché hodnoty nebo rozsahu hodnot je následující:
<value> ::=
<simplevalue>
| <simplevalue> .. <simplevalue>
Jednoduchá hodnota se může skládat z některého z následujících typů:
<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>
Příklady
Dotaz, který hledá dokument obsahující fázi "poslední čtvrtletí", kterou vytvořil Theresa nebo Lee a který byl uložen do složky MyDocs, kombinuje tři základní dotazy následujícím způsobem:
"last quarter" author:(theresa OR lee) folder:MyDocs
Jedná se o tři základní dotazy:
- "poslední čtvrtletí"
- autor:(theresa OR lee)
- složka:MyDocs
Základní dotaz, který používá kanonickou syntaxi, je:
System.Size:>1kb
Vlastnosti
Vlastnosti jsou odkazovány klíčovým slovem, což může být název kanonické vlastnosti v systému Windows 7 a novější. AQS v uživatelském rozhraní systému Windows může místo názvu kanonické vlastnosti použít popisek, například autor místo System.Author. Ve Windows Vista a dřívějších verzích bylo možné používat anglické popisky bez ohledu na jazyk uživatelského rozhraní. Ve Windows 7 a novějších Windows Search rozpoznává klíčová slova pouze v aktuálním výchozím jazyce uživatelského rozhraní.
Podpora vlastních vlastností
Ve Windows Vista a starších verzích nebyly vlastní vlastnosti v AQS k dispozici. Ve Windows 7 a novějších pracuje AQS s vlastními vlastnostmi registrovanými v systému vlastností. Další informace o vytváření vlastních vlastností naleznete v tématu Systém vlastností.
Vlastnosti DateTime ve Windows 8
Od Windows 8 podporují vlastnosti DateTime (například System.DateModified) kanonický formát data a času určený ISO-8601, volitelně včetně časového pásma UTC.
Windows 8 a starší, datum a čas bez časového pásma UTC:YYYY-MM-DDThh:mm:ss
Tento formát určuje místní čas bez ohledu na národní prostředí uživatele nebo systému.
Windows 8, datum a čas s časovým pásmem UTC:YYYY-MM-DDThh:mm:ssTZD
Tento formát určuje čas v zadaném časovém pásmu UTC.
Použití klíčového slova v místních jazycích
Ve Windows 7 a novějších fungují klíčová slova mnemonic pouze v systémovém jazyce, jako jsou německá klíčová slova pouze v německém operačním systému a anglická klíčová slova pouze v anglickém operačním systému. System.Author je kanonické klíčové slovo a mnemonická hodnota pro vlastnost System.Author je například Autor. Zavedení kanonických klíčových slov kompenzuje skutečnost, že anglická mnemonic klíčová slova již nejsou všeobecně rozpoznána ve všech operačních systémech bez ohledu na jazyk, jak tomu bylo v systému Windows Vista a dříve.
Poznámka
Ve Windows 7 a novějších windows služba Windows Search rozpozná klíčová slova pouze v aktuálním výchozím jazyce, a ne v angličtině, pokud angličtina není aktuální výchozí. Doporučujeme, aby vývojáři vždy používali kanonickou syntaxi, aby jejich aplikace neměla problémy s jazykem s klíčovými slovy.
Kanonická pokročilá syntaxe dotazů ve Windows 7
Kanonická syntaxe byla zavedena pro klíčová slova ve Windows 7. Příklad dotazu s kanonickou vlastností je System.Message.FromAddress:=me@microsoft.com
. Při psaní dotazů v aplikacích běžících ve Windows 7 a novějších je nutné použít kanonickou syntaxi pro programové generování dotazů AQS. Pokud nepoužíváte kanonickou syntaxi a vaše aplikace se nasadí v národním prostředí nebo v jazyce uživatelského rozhraní, který se liší od jazyka v kódu aplikace, nebudou vaše dotazy interpretovány správně.
Konvence syntaxe kanonických klíčových slov jsou následující:
- Kanonická syntaxe vlastnosti je její kanonický název, například
System.Photo.LightSource
. V kanonických názvech se nerozlišují malá a velká písmena. - Kanonická syntaxe logických operátorů se skládá z klíčových slov AND, OR a NOT ve všech velkých písmenech.
- Operátory <, >, =atd., nejsou lokalizovány a jsou tedy také součástí kanonické syntaxe.
- Pokud má vlastnost
P
výčtové hodnoty nebo oblasti s názvem N₁ až Nₖ, kanonická syntaxe pro Ihodnotu nebo rozsah je kanonický název P, následovaný znakem #, následovaný NI, jak je znázorněno v následujícím příkladu.-
System.Photo.LightSource#Daylight
,System.Photo.LightSource#StandardA
a tak dále.
-
- Pro definovaný sémantický typ T s hodnotami nebo rozsahy pojmenovanými jako N₁ až Nk je kanonická syntaxe příslušné hodnoty nebo rozsahu Ikanonický název pro T, následovaný znakem #, následovaný znakem NI, jak je znázorněno v následujícím příkladu.
System.Devices.LaunchDeviceStageFromExplorer:=System.StructuredQueryType.Boolean#True
- U literálových hodnot, jako jsou slova nebo fráze, je kanonická syntaxe stejná jako běžná syntaxe. Příklady dotazů s literálními hodnotami v kanonické syntaxi jsou:
System.Author:sanjay
System.Keywords:"Animal"
System.FileCount:>100
Poznámka
Pro čísla ve Windows 7 a novějších není kanonická syntaxe. Vzhledem k tomu, že se formáty s plovoucí desetinnou čárkou liší mezi národními prostředími, použití kanonického dotazu, který zahrnuje konstantu s plovoucí desetinnou čárkou, není podporováno. Celočíselné konstanty lze naopak zapisovat pouze pomocí číslic (bez oddělovačů tisíců) a lze je bezpečně používat v kanonických dotazech ve Windows 7 a novějších verzích.
Příklady
V následující tabulce jsou uvedeny příklady kanonických vlastností a syntaxe pro jejich použití.
Typ kanonické vlastnosti | Příklad | Syntaxe |
---|---|---|
Řetězcová hodnota |
Systém.Autor |
Hodnota řetězce se vyhledá ve vlastnosti autora: System.Author:Jacobs |
Rozsah výčtů | Systémová Priorita | Vlastnost priority může mít číselný rozsah hodnot:System.Priority:System.Priority#High |
Booleovský |
System.IsDeleted |
Logické hodnoty lze použít s libovolnou logickou vlastností:System.IsDeleted:System.StructuredQueryType.Boolean#True a System.IsDeleted:System.StructuredQueryType.Boolean#False |
Číselný |
System.Size |
Není možné bezpečně psát kanonický dotaz, který zahrnuje plovoucí desetinnou číselnou konstantu, protože formáty s plovoucí desetinnou čárkou se liší mezi lokalitami. Celá čísla musí být zapsána bez oddělovačů tisíců. Například:System.Size:<12345 |
Další informace o kanonických vlastnostech a systému vlastností obecně naleznete v tématu Vlastnosti systému. Případně se podívejte na soubory veřejných hlaviček.
Operátory dotazů
Pokud vlastnost p obsahuje více hodnot pro určitou položku, dotaz AQS pro p:<restr> vrátí položku, pokud <restr> je true pro alespoň jednu z hodnot. (<restr> představuje omezení.)
Syntaxe uvedená v následující tabulce se skládá z operátoru, symbolu operátoru, příkladu a příkladu popisu. Operátor a symbol lze použít v libovolném jazyce a zahrnout do libovolného dotazu. Nepoužívejte operátory COP_IMPLICIT ani COP_APPLICATION_SPECIFIC. Některé operátory mají zaměnitelné symboly.
Operátor | Symbol | Příklad | Popis |
---|---|---|---|
COP_EQUAL | = |
System.FileExtension:=".txt" |
Hodnota je řetězec ".txt". |
COP_NOTEQUAL | ≠ - <> NE - - |
System.Kind:≠obrázek System.Photo.DateTaken:-[]¹ System.Kind:<>obrázek System.Druh:NENÍ obrázek System.Kind:- -picture |
Vlastnost System.Kind není obrázek. Vlastnost System.Photo.DateTaken má hodnotu. Vlastnost System.Kind není obrázek. Vlastnost System.Kind není obrázek. Dvojité operátory NOT použité na stejnou vlastnost se nezruší. Proto System.Kind:- -picture je ekvivalentem System.Kind:-picture a System.Kind:NOT picture. |
COP_MÉNĚNEŽ | < |
Velikost systému:<1 kB |
Tato hodnota je menší než 1 kB. |
COP_GREATERTHAN | > |
System.ItemDate:>System.StructuredQueryType.DateTime#Today |
Dnes je tato hodnota větší než . |
COP_LESSTHANOREQUAL |
<= ≤ |
Systém.Velikost:<=1kb |
Tato hodnota je menší nebo rovna 1 kB. |
VĚTŠÍNEBOROVNÝ |
>= ≥ |
System.Size:>= 1 kB |
Tato hodnota je rovna nebo větší než 1 kB. |
COP_VALUE_STARTSWITH | ~< |
System.FileName:~<"C++ Primer" |
Najde položky, kde název souboru začíná znaky "C++ Primer". |
COP_VALUE_ENDSWITH | ~> |
System.Photo.CameraModel:~>non |
Vyhledá položky, kde hodnota vlastnosti končí znaky , ale nekončí znaky. |
HODNOTA_COP_OBSAHUJE | ~= ~~ |
System.Předmět.~=round System.Search.Autosummary:~~round |
Najde zprávu, která obsahuje tento řetězec v předmětu, která například odpovídá "gkolo pravidla". Najde všechny položky s automatickým shrnutím, které obsahují znaky a. |
COP_HODNOTA_NEOBSAHUJE | ~! |
System.Author:~!" sanjay" |
Najde autory, kteří nemají ve svých jménech posloupnost znaků "sanjay". |
COP_DOSWILDCARDS | ~ |
System.FileName:~"Mic?osoft W*d" |
Najde soubory, kde název souboru začíná Mic, následovaný nějakým znakem, následovaným osoft w, následovaným libovolnými znaky končícími d. To? a * znaky nejsou interpretovány doslova a fungují jako zástupné znaky ve stylu DOS:
|
COP_WORD_EQUAL | $= $$ |
System.StructuredQuery.Virtual.From:$="Sanjay Jacobs" |
Pro Windows 7 a novější. Najde frázi "Sanjay Jacobs" ve všech vlastnostech From. Za slovo Sanjay musí následovat slovo Jacobs. |
SLOVO_ZAČÍNÁ | $< |
System.Author:$<"San" System.Filename:$<"Micro Exe" |
Pro Windows 7 a novější. Najde libovolnou položku, ve které autor obsahuje slovo začínající znaky "San". Najde jakýkoli soubor, ve kterém název souboru obsahuje slovo začínající mikro, následované slovem začínajícím exe. |
¹ Prázdné hranaté závorky ([]) označují "žádná hodnota".
U vlastností řetězce je výchozí operace COP_WORD_STARTS_WITH nebo COP_WORD_EQUAL.
Hodnoty dotazu
Užitečné příklady omezení hodnot dotazů jsou uvedeny v následující tabulce.
Hodnota/symbol | Příklady | Popis |
---|---|---|
Řetězec | auto |
Libovolná posloupnost znaků, kterou lze vyhledat. Řetězec nesmí obsahovat prázdné znaky ani kombinace znaků, které jsou součástí syntaxe. Tento příklad vyhledá slovo začínající auto. |
Řetězec v uvozovkách "" | "Závěry: platné" ""Modrý"" tým" |
Libovolná posloupnost znaků. Řetězec není interpretován jako součást syntaxe. Uvozovky mohou být zahrnuty do dotazu, pokud se zdvojnásobí. Tento příklad hledá tým "modrý" . |
Celé číslo | 5678 |
Používejte pouze číslice pro celá čísla. Nepoužívejte žádné oddělovače pro tisíce. |
Číslo s pohyblivou řádovou čárkou | 5678.1234 |
Vzhledem k tomu, že se formáty s plovoucí desetinnou čárkou liší mezi lokálními prostředími, nemůže kanonický dotaz použít plovoucí desetinnou konstantu. Použití kanonické syntaxe s desetinnými čísly s plovoucí řádovou čárkou není z hlediska lokalizace bezpečné. |
Logická hodnota pravda/nepravda | System.IsRead:=System.StructuredQueryType.Boolean#True System.IsEncrypted:-System.StructuredQueryType.Boolean#False |
Booleovská hodnota TRUE. FALSE logická hodnota typu Boolean. |
[] | System.Keywords:=[] |
Prázdné hranaté závorky označují, že neexistuje žádná hodnota. Tento příklad najde všechny položky, které nebyly označené. |
Absolutní data | System.ItemDate:26.1.2010 SystemDateModified 15.10.2002 19:00 |
Najde položky s datem 26. ledna 2010. Najde položky změněné 15. října 2002 mezi hodinami 19:00:00 a 19:00:59.
Poznámka: |
Relativní data | System.ItemDate:System.StructuredQueryType.DateTime#Today System.DateAcquired:System.StructuredQueryType.DateTime#PříštíMěsíc System.Message.DateReceived:System.StructuredQueryType.DateTime#LastYear |
Najde položky s dnešním datem. Najde položky s datem v následujícím měsíci. Najde položky s datem v posledním roce.
Poznámka: |
.. | System.ItemDate:11/05/04..11/10/04 System.Size:5kb.. 10 kB |
Dvojité tečky označují rozsah hodnot. Najde položky s datem od 11.05.04 do 11.10.04. včetně. Najde položky ve velikosti 5 až 10 kB. |
Omezení rozsahu
Uživatelé můžou omezit rozsah hledání na konkrétní umístění složek nebo úložiště dat. Pokud například používáte několik e-mailových účtů a chcete omezit dotaz na Microsoft Outlook nebo Microsoft Outlook Express, můžete použít System.Search.Store:mapi
nebo System.Search.Store:oe
. Následující tabulka uvádí několik příkladů, jak omezit vyhledávání podle úložiště dat.
Omezení vyhledávání podle úložiště dat | Klíčové slovo | Příklad |
---|---|---|
Soubory | soubor | System.Search.Store:file |
Vyhlídka | mapi | System.Search.Store:mapi |
Outlook Express | oe | System.Search.Store:oe |
Offline soubory | csc | System.Search.Store:csc |
Konkrétní složka na místním disku | složka | System.ItemFolderNameDisplay:C:"\MyFolder" |
Další zdroje informací
- V systému Windows 7 a novějších může být možnost místní nabídky dostupná, pokud je splněna podmínka AQS. Další informace naleznete v tématu "Získání dynamického chování statických sloves pomocí rozšířené syntaxe dotazů" v vytváření obslužných rutin kontextové nabídky.
- Dotazy AQS můžou být omezené na konkrétní typy souborů, které se označují jako typy souborů. Další informace naleznete v tématu Typy Souborů a Přidružení. Referenční dokumentaci k vlastnostem najdete v částech System.Kinda System.KindText.
Související témata
-
dotazování indexu pomocí ISearchQueryHelper
-
dotazování indexu pomocí syntaxe SQL služby Windows Search