Megosztás a következőn keresztül:


Speciális lekérdezési szintaxis programozott használata

A Speciális lekérdezési szintaxis (AQS) a Windows Search által az index lekérdezésére, valamint a keresési paraméterek pontosítására és szűkítésére használt alapértelmezett lekérdezési szintaxis. Az AQS-t a fejlesztők használják a lekérdezések programozott létrehozására (és a felhasználók a keresési paraméterek szűkítésére). A Canonical AQS-t a Windows 7-ben vezették be, és a Windows 7-ben és később kell használni az AQS-lekérdezések programozott létrehozásához.

Ez a témakör a következőképpen van rendszerezve:

Tudnivalók a speciális lekérdezési szintaxisról

A lekérdezések az AND, OR és NOT függvényhez kapcsolódó alapszintű lekérdezésekből állnak, ahogyan az alábbi példa szintaxisa is mutatja:

<query> ::=
     <basic query>
| ( <query> )
| <query> AND <query>  
| <query> <query>    // Same as <query> AND <query>
| <query> OR <query> 
| NOT <query>

Jegyzet

Az AQS nem tesz különbséget a kis- és nagybetűk között, kivéve az AND, OR és NOT, amelyeknek nagybetűsnek kell lenniük.

 

Ha egy lekérdezés két vagy több ÉS vagy VAGY használatával rendelkezik, balról jobbra kötődik, függetlenül attól, hogy ÉS vagy VAGY. Vagyis az "alma ÉS körte VAGY szilva" lekérdezést úgy értelmezzük, mintha "(alma ÉS körte) VAGY szilva" lenne, és a "alma VAGY körte ÉS szilva" lekérdezést úgy értelmezzük, mintha "(alma vagy körte) ÉS szilva" lenne. Tehát ha egy dokumentum tartalmazza a szilva szót, de sem almát, sem körtét nem, az első lekérdezés visszaadja, de a második lekérdezés nem. Ezért javasoljuk, hogy használjon explicit zárójeleket minden olyan lekérdezéshez, amely összekeveri az AND és az OR függvényt, hogy elkerülje a hibákat vagy a félreértelmezéseket.

Az alapszintű lekérdezés olyan elemeket keres, amelyek megfelelnek egy tulajdonság korlátozásának. Az alapszintű lekérdezések egyetlen kötelező része a korlátozás vagy a keresési érték. Ha nem ad meg tulajdonságot, a Windows Search az összes tulajdonságban keres. <restr> a keresési korlátozást jelöli.

Az alapszintű lekérdezéshez a következő űrlapok érvényesek:

<basic query> ::=
     <prop>:<basic restr>
| <restr>

A tulajdonságot kulcsszó, például szerző vagy méret, vagy egy olyan canonical tulajdonságnév jelöli, mint például a System.DateModified. Egy tulajdonság érvényes űrlapjai a következők:

<prop> ::= 
     <canonical property name>
| <property label in UI language>

Az operátor olyan műveletet jelez, mint a < vagy az =. Az érvényes operátorok listáját a jelen témakör későbbi, Lekérdezési operátorok szakaszában találja.

Az alapszintű korlátozás egy egyszerű korlátozás egy olyan tulajdonságra, amely zárójelek nélkül írható:

<basic restr> ::=
     <value>
| <op><value>
| NOT <basic restr>
| ( <restr> )

A korlátozás egy keresési érték, például számérték vagy sztringérték, opcionálisan operátorral. A korlátozás érvényes űrlapjai a következők:

<restr> ::=
    <basic restr>
| <restr> AND <restr>
| <restr> <restr>      // Same as <restr> AND <restr>
| <restr> OR <restr>

Ha nem ad meg operátort, a Windows Search a lekérdezéshez legmegfelelőbb operátort választja:

  • Sztringtulajdonság esetén a COP_WORD_STARTSWITH $< operátort feltételezzük.
  • Az összes többi tulajdonság esetében a COP_EQUAL = operátort feltételezzük.

Az AQS programozott alkalmazásához azt javasoljuk, hogy mindig legyen egyértelmű operátor. Egy egyszerű érték vagy értéktartomány keresésének érvényes űrlapja a következő:

<value> ::=
    <simplevalue>
| <simplevalue> .. <simplevalue>

Egy egyszerű érték a következő típusok bármelyikéből állhat:

<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éldák

A Theresa vagy Lee által létrehozott, a MyDocs mappába mentett, "utolsó negyedév" fázist tartalmazó dokumentumot kereső lekérdezés az alábbi három alapvető lekérdezést egyesíti:

"last quarter" author:(theresa OR lee) folder:MyDocs

A három alapszintű lekérdezés a következő:

  • "utolsó negyedév"
  • szerző:(theresa OR lee)
  • mappa:SajátDokumentumok

A canonical szintaxist használó alapszintű lekérdezés a következő:

System.Size:>1kb

Tulajdonságok

A Windows 7-ben és az azt követő verziókban a tulajdonságokra egy kulcsszó hivatkozik, amely kanonikus tulajdonságnév lehet. A Windows felhasználói felületben az AQS a kanonikus tulajdonságnév helyett a címkét használhatja, például a szerzőt System.Authorhelyett. A Windows Vista és korábbi verziókban a felhasználói felület nyelvétől függetlenül lehetett angol nyelvű címkéket használni. A Windows 7-es és újabb verzióiban a Windows Search csak az aktuális alapértelmezett felhasználói felületi nyelven ismeri fel a kulcsszavakat.

Egyéni tulajdonságok támogatása

A Windows Vista és korábbi verziókban az egyéni tulajdonságok nem voltak elérhetők az AQS-ben. A Windows 7-es és újabb verzióiban az AQS a tulajdonságrendszerben regisztrált egyéni tulajdonságokkal működik. További információ az egyéni tulajdonságok létrehozásáról: Tulajdonságrendszer.

DateTime-tulajdonságok a Windows 8-ban

Windows 8 rendszeren a DateTime-tulajdonságok (például System.DateModified) támogatják ISO-8601által megadott canonical date and time formátumot, opcionálisan az UTC időzónát is beleértve.

  • Windows 8 és korábbi, dátum-idő UTC időzóna nélkül:YYYY-MM-DDThh:mm:ss

    Ez a formátum helyi időpontot határoz meg a felhasználótól vagy a rendszer területi beállításától függetlenül.

  • Windows 8, dátum-idő UTC időzónával:ÉÉÉÉ-MM-DDThh:mm:ssTZD

    Ez a formátum egy időpontot határoz meg a megadott UTC időzónában.

Kulcsszóhasználat helyi nyelveken

A Windows 7-ben és újabb verziókban a mnemonikus kulcsszavak csak a rendszernyelven működnek, például a német kulcsszavak csak német operációs rendszeren, az angol kulcsszavak pedig csak angol operációs rendszeren. System.Author egy kanonikus kulcsszó, és például a System.Author tulajdonság mnemonikus értéke a Szerző. A canonical kulcsszavak bevezetése kompenzálja azt a tényt, hogy az angol mnemonikus kulcsszavakat már nem ismerik fel az összes operációs rendszeren nyelvtől függetlenül, ahogyan a Windows Vista és a korábbi rendszerek esetében is.

Jegyzet

A Windows 7-ben és újabb verziókban a Windows Search csak az aktuális alapértelmezett nyelven ismeri fel a kulcsszavakat, és nem angolul, kivéve, ha az angol a jelenlegi alapértelmezett. Javasoljuk, hogy a fejlesztők mindig használják a canonical szintaxist, hogy az alkalmazásuk ne okozjon nyelvi problémákat a kulcsszavakkal.

 

"Canonical Advanced Query Syntax" a Windows 7-ben

A Windows 7-ben bevezették a canonical szintaxist a kulcsszavakhoz. Egy példa a kanonikus tulajdonsággal rendelkező lekérdezésre: System.Message.FromAddress:=me@microsoft.com. A Windows 7 és újabb rendszereken futó alkalmazások lekérdezéseinek kódolásakor az AQS-lekérdezések programozott módon történő létrehozásához a canonical szintaxist kell használnia. Ha nem használja a canonical szintaxist, és az alkalmazás az alkalmazáskód nyelvétől eltérő területi vagy felhasználói felületi nyelven van üzembe helyezve, a lekérdezések nem lesznek megfelelően értelmezve.

A kanonikus kulcsszó szintaxis konvenciói a következők:

  • Egy tulajdonság kanonikus szintaxisa a kanonikus neve (például System.Photo.LightSource). A kanonikus nevek nem érzékenyek a kis- és nagybetűkre.
  • A logikai operátorok kánonikus szintaxisa az AND( VAGY) és a NOT (NEM) kulcsszavakból áll minden nagybetűben.
  • A <, >, = és a többi operátor nem honosított, tehát a kanonikus szintaxis részét képezik.
  • Ha egy tulajdonságnak P felsorolt értékei vagy tartományai vannak, amelyek N₁-től Nk-ig terjednek, akkor a .. érték vagy tartomány kanonikus szintaxisa a P kanonikus neve, amelyet a # karakter követ, majd az N. és., ahogyan az alábbi példában látható:
    • System.Photo.LightSource#Daylight, System.Photo.LightSource#StandardAstb.
  • A T egy definiált szemantikai típus, amelynek vannak N₁-től Nk-ig nevezett értékei vagy tartományai. Az I. érték vagy tartomány kanonikus szintaxisa a T kánonneve, majd a # karakter, majd az NI, amint az alábbi példában látható.
    • System.Devices.LaunchDeviceStageFromExplorer:=System.StructuredQueryType.Boolean#True
  • A literálértékek, mint például a szavak vagy kifejezések, esetében a kanonikus szintaxis megegyezik a normál szintaxissal. Példák a konstans értékeket tartalmazó lekérdezésekre a canonical szintaxisban:
    • System.Author:sanjay
    • System.Keywords:"Animal"
    • System.FileCount:>100

Jegyzet

A Windows 7-ben és újabb verziókban a számoknak nincs kánonikus szintaxisa. Mivel a lebegőpontos formátumok területi beállítások között eltérőek, a lebegőpontos állandót tartalmazó canonical query használata nem támogatott. Ezzel szemben az egész számállandók csak számjegyek használatával írhatók (ezredekhez nem használhatók elválasztójelek), és biztonságosan használhatók a Windows 7-ben és újabb verziókban végzett kánonikus lekérdezésekben.

 

Példák

Az alábbi táblázat néhány példát mutat be a canonical tulajdonságokra és a használatuk szintaxisára.

A canonical tulajdonság típusa Példa Szintaxis
Sztringérték Rendszer.Szerző
A sztring értéke a szerző tulajdonságban keresve van:
System.Author:Jacobs
Számbavételi tartomány Rendszer.Prioritás A prioritási tulajdonság numerikus értéktartománysal rendelkezhet:
System.Priority:System.Priority#High
Logikai System.TöröltE
A logikai értékek bármely logikai tulajdonsággal használhatók:
System.IsDeleted:System.StructuredQueryType.Boolean#Trueés System.IsDeleted:System.StructuredQueryType.Boolean#False
Numerikus System.Size
Nem lehet biztonságosan írni olyan canonical lekérdezést, amely lebegőpontos állandót tartalmaz, mivel a lebegőpontos formátumok területileg eltérőek. Az egész számokat elválasztójelek nélkül kell írni ezredekhez. Például:
System.Size:<12345

 

A canonical tulajdonságokról és általában a tulajdonságrendszerről további információt Rendszertulajdonságokcímű témakörben talál. Másik lehetőségként tekintse meg a nyilvános fejlécfájlokat.

Lekérdezési operátorok

Ha egy p tulajdonság több értékkel is rendelkezik egy adott elemhez, akkor a p tulajdonság AQS-lekérdezése:<restr> akkor adja vissza az elemet, ha <restr>igaz legalább egy értékhez. (<restr> korlátozást jelöl.)

Az alábbi táblázatban felsorolt szintaxis operátorból, operátorszimbólumból, példa- és példaleírásból áll. Az operátor és a szimbólum bármilyen nyelven használható, és bármely lekérdezésben szerepelhet. Ne használja a COP_IMPLICIT vagy COP_APPLICATION_SPECIFIC operátorokat. Néhány operátor felcserélhető szimbólumokkal rendelkezik.

Operátor Jelkép Példa Leírás
COP_EQUAL =
System.FileExtension:=".txt"
Az érték a ".txt" karakterlánc.
COP_NOTEQUAL
-
<>
NEM
- -
System.Kind:≠kép
System.Photo.DateTaken:-[]¹
Rendszer.Típus:<>kép
System.Kind:NOT kép
System.Kind:- -picture
A System.Kind tulajdonság nem kép.
A System.Photo.DateTaken tulajdonságnak van egy értéke.
A System.Kind tulajdonság nem kép.
A System.Kind tulajdonság nem kép.
Az ugyanarra a tulajdonságra alkalmazott dupla NOT operátorok nem törlődnek. Ezért a System.Kind:- -picture egyenértékű a System.Kind:-picture és a System.Kind:NOT képpel.
COP_LESSTHAN <
System.Size:<1kb
Ez az érték kisebb, mint 1kb.
COP_GREATERTHAN >
System.ItemDate:>System.StructuredQueryType.DateTime#Today
Ez az érték ma nagyobb, mint .
COP_LESSTHANOREQUAL <=

System.Size:<= 1 kb
Ez az érték kisebb vagy egyenlő, mint 1kb.
COP_NAGYOBB_VAGY_EGYENLŐ >=

Rendszer.Méret:>=1kbájt
Ez az érték egyenlő vagy nagyobb, mint 1kb.
COP_ÉRTÉK_KEZDŐDIKVAL ~<
System.FileName:~<"C++ Primer"
Megkeresi azokat az elemeket, amelyekben a fájlnév "C++ Alapozó" karakterekkel kezdődik.
COP_VALUE_ENDSWITH ~>
System.Photo.CameraModel:~>nem
Megkeresi azokat az elemeket, amelyekben a tulajdonság értéke nemkarakterekkel végződik.
COP_ÉRTÉK_TARTALMAZ ~=
~~
System.Subject.~=kerekítés
System.Search.Autosummary:~~round
Megkeres egy olyan üzenetet, amelynek a tárgyában szerepel ez a karakterlánc, és például megfelel a "gkerek szabályok" kifejezésnek.
Megkeresi az összes olyan autoszummáris elemet, amely a kerekkaraktereket tartalmazza.
COP_ÉRTÉK_NEM_TARTALMAZ ~!
System.Author:~!" sanjay"
Megkeresi azokat a szerzőket, amelyekben nem szerepel a "sanjay" karaktersorozat.
COP_DOSWILDCARDS ~
System.FileName:~"Mic?osoft W*d"
Megkeresi azokat a fájlokat, ahol a fájlnév a Mickezdődik, követ valamilyen karakter, majd a osoft w, majd bármilyen karakter következik, és végül d-re végződik.
A? és a * karaktereket nem értelmezik szó szerint, hanem DOS-stílusú helyettesítő karakterekként működnek:
  • ? egy tetszőleges karakternek felel meg.
  • * nulla vagy több tetszőleges karakternek felel meg.
SZÓ_EGYENLŐ $=
$$
System.StructuredQuery.Virtual.From:$="Sanjay Jacobs"
Windows 7-hez és újabb verziókhoz. Megkeresi a "Sanjay Jacobs" kifejezést az összes From tulajdonságban. A Sanjay szót Jacobskell követni.
KEZDŐDIK_SZÓVAL_COP $<
System.Author:$<"San" System.Filename:$<"Micro Exe"
Windows 7-hez és újabb verziókhoz. Megkeresi azokat az elemeket, ahol a Szerző a "San" karakterekkel kezdődő szót tartalmaz.
Megkeresi azokat a fájlokat, amelyekben a fájlnév tartalmaz egy mikrokezdetű szót, majd egy exekezdetű szót.

 

¹ Üres szögletes zárójelek ([]) "nincs érték".

Szöveges tulajdonságok esetén az alapértelmezett művelet lehet COP_WORD_STARTS_WITH vagy COP_WORD_EQUAL.

Lekérdezési értékek

A lekérdezési értékek korlátozásának hasznos példáit az alábbi táblázatban találja.

Érték/szimbólum Példák Leírás
Karakterlánc kocsi
Tetszőleges karaktersorozat, amely kereshető. A sztring nem tartalmazhat olyan szóközöket vagy karakterkombinációkat, amelyek a szintaxis részét képezik. Ez a példa egy olyan szót keres, amely autoszóval kezdődik.
Idézett sztring : "" "Következtetések: érvényes" "A ""kék" csapat"
Tetszőleges karaktersorozat. A karakterlánc nem értelmezendő a szintaxis részeként.
Egy lekérdezésben idézőjelek is szerepelhetnek, ha duplázva vannak. Ez a példa a "kék" csapat keres.
Egész szám 5678
Csak számjegyeket használjon egész számokhoz. Ne használjon elválasztójeleket ezrek számára.
Lebegőpontos szám 5678.1234
Mivel a lebegőpontos formátumok területi beállítások között eltérőek, a canonical lekérdezések nem használhatnak lebegőpontos állandót. A lebegőpontos számokat tartalmazó szabványos szintaxis használata nem lokalizációbiztos.
Logikai igaz/hamis System.IsRead:=System.StructuredQueryType.Boolean#True
System.IsEncrypted:-System.StructuredQueryType.Boolean#False
A IGAZ logikai érték.
A HAMIS logikai érték.
[] System.Keywords:=[]
Az üres szögletes zárójelek azt jelzik, hogy nincs érték. Ez a példa megkeresi az összes olyan elemet, amely nincs címkézve.
Abszolút dátumok System.ItemDate:1/26/2010
SystemDateModified 2002. 10. 15. 19:00
Megkeresi a 2010. január 26-i dátummal rendelkező elemeket.
Megkeresi a 2002. október 15-én 19:00:00 és 19:00:59 óra között módosított elemeket.

megjegyzés:
Mivel a dátumformátumok (például a lebegőpontos formátumok) különbözőek lehetnek a területi beállítások között, a szabványos szintaxis használata abszolút dátumok esetén nem támogatott, és nem biztonságos a lokalizálás szempontjából.


Relatív dátumok System.ItemDate:System.StructuredQueryType.DateTime#Today
System.DateAcquired:System.StructuredQueryType.DateTime#NextMonth
System.Message.BeérkezésDátuma:System.StructuredQueryType.DátumIdő#ElmúltÉv
Megkeresi a mai dátumú elemeket.
Megkeresi a következő hónapban dátummal rendelkező elemeket.
Megkeresi az elmúlt évben dátummal rendelkező elemeket.

megjegyzés:
A megadott dátumok és dátumtartományok keresése mellett az AQS felismeri a relatív dátumértékeket (például ma, holnap, következő hét, következőhavi), valamint a napot (például keddi vagy hétfőt). Szerda), és hónap (február).


.. System.ItemDate:11/05/04..11/10/04 System.Size:5kb..10kb
A dupla időszakok értéktartományt jelölnek. Keres olyan elemeket, amelyek dátuma 2004.05.11. és 2004.11.10. között van, beleértve az említett napokat is.
5 és 10kb közötti elemeket keres.

 

Hatókörkorlátozások

A felhasználók a keresések hatókörét meghatározott mappahelyekre vagy adattárakra korlátozhatják. Ha például több e-mail-fiókot használ, és egy lekérdezést a Microsoft Outlookra vagy a Microsoft Outlook Expressre szeretne korlátozni, használhatja System.Search.Store:mapi vagy System.Search.Store:oe is. Az alábbi táblázat néhány példát mutat be arra, hogyan korlátozhatja a keresést adattárak szerint.

Keresés korlátozása adattár szerint Kulcsszó Példa
Fájlokat fájl System.Search.Store:file
Kilátás mapi System.Search.Store:mapi
Outlook Express Oe System.Search.Store:oe
Offline fájlok csc System.Search.Store:csc
Adott mappa a helyi meghajtón mappa System.ItemFolderNameDisplay:C:"\MyFolder"

 

További erőforrások

  • Windows 7 és újabb verziókban a helyi menüben egy parancsikon opció érhető el, attól függően, hogy teljesül-e az AQS-feltétel. További információ: "Dinamikus viselkedés lekérése statikus igékhez speciális lekérdezésszintaxis használatával" című témakörben Helyi menükezelők létrehozása.
  • Az AQS-lekérdezések bizonyos fájltípusokra, más néven fájltípusokra korlátozhatók. További információ: Fájltípusok és társítások. A tulajdonságreferenciák dokumentációját lásd: System.Kindés System.KindText.

Index programozott lekérdezése

Sql és AQS-megközelítések használata az index lekérdezéséhez

Index lekérdezése az ISearchQueryHelper segítségével

Az index lekérdezése a search-ms protokollal

Az index lekérdezése a Windows Search SQL szintaxissal