Menggunakan Sintaks Kueri Tingkat Lanjut Secara Terprogram
Advanced Query Syntax (AQS) adalah sintaks kueri default yang digunakan oleh Windows Search untuk mengkueri indeks dan untuk memperbaiki dan mempersempit parameter pencarian. AQS digunakan oleh pengembang untuk membangun kueri secara terprogram (dan oleh pengguna untuk mempersempit parameter pencarian mereka). Canonical AQS diperkenalkan di Windows 7 dan harus digunakan di Windows 7 dan yang lebih baru untuk menghasilkan kueri AQS secara terprogram.
Topik ini diatur sebagai berikut:
- Tentang Sintaks Kueri Tingkat Lanjut
- Penggunaan Kata Kunci dalam Bahasa Lokal
- Sintaks Kueri Tingkat Lanjut Kanonis di Windows 7
- Pembatasan Cakupan
- Sumber Tambahan
- Topik terkait
Tentang Sintaks Kueri Tingkat Lanjut
Kueri terdiri dari kueri dasar yang tersambung dengan AND, OR, dan NOT, seperti yang diperlihatkan dalam contoh sintaks berikut:
<query> ::=
<basic query>
| ( <query> )
| <query> AND <query>
| <query> <query> // Same as <query> AND <query>
| <query> OR <query>
| NOT <query>
Catatan
AQS tidak peka huruf besar/kecil, dengan pengecualian AND, OR, dan NOT, yang harus dalam huruf besar semua.
Jika kueri memiliki dua atau beberapa penggunaan AND atau OR, kueri akan mengikat dari kiri ke kanan, terlepas dari apakah itu AND atau OR. Artinya, kueri, "apple AND pear OR plum" akan ditafsirkan seolah-olah ditulis sebagai "(apple AND pear) OR plum", dan kueri, "apple OR pear AND plum", akan ditafsirkan seolah-olah ditulis sebagai "(apel ATAU pir) DAN plum". Jadi jika dokumen berisi kata plum tetapi baik apel, maupun pir, kueri pertama akan mengembalikannya tetapi kueri kedua tidak akan. Oleh karena itu, kami sarankan Anda menggunakan tanda kurung eksplisit untuk kueri apa pun yang mencampur AND dan OR untuk menghindari kesalahan atau salah menafsirkan.
Kueri dasar mencari item yang memenuhi pembatasan properti. Satu-satunya bagian yang diperlukan dari kueri dasar adalah nilai pembatasan atau pencarian. Jika Anda tidak menentukan properti, Pencarian Windows akan mencari semua properti. <restr> mewakili pembatasan pencarian.
Formulir berikut untuk kueri dasar valid:
<basic query> ::=
<prop>:<basic restr>
| <restr>
Properti ditunjuk oleh kata kunci seperti penulis atau ukuran, atau dengan nama properti kanonis seperti System.DateModified. Formulir yang valid untuk properti adalah sebagai berikut:
<prop> ::=
<canonical property name>
| <property label in UI language>
Operator menunjukkan operasi seperti < atau =. Untuk daftar operator yang valid, lihat bagian Operator Kueri nanti dalam topik ini.
Pembatasan dasar adalah pembatasan sederhana pada properti yang dapat ditulis tanpa tanda kurung:
<basic restr> ::=
<value>
| <op><value>
| NOT <basic restr>
| ( <restr> )
Pembatasan adalah nilai pencarian seperti nilai angka atau nilai string, secara opsional dengan operator. Formulir yang valid untuk pembatasan adalah sebagai berikut:
<restr> ::=
<basic restr>
| <restr> AND <restr>
| <restr> <restr> // Same as <restr> AND <restr>
| <restr> OR <restr>
Jika Anda tidak menentukan operator, Windows Search memilih operator yang paling tepat untuk kueri Anda:
- Untuk properti string, operator COP_WORD_STARTSWITH $< diasumsikan.
- Untuk semua properti lainnya, operator COP_EQUAL = diasumsikan.
Untuk penggunaan terprogram AQS, kami sarankan Anda selalu memiliki operator eksplisit. Formulir yang valid untuk mencari nilai sederhana atau rentang nilai adalah sebagai berikut:
<value> ::=
<simplevalue>
| <simplevalue> .. <simplevalue>
Nilai sederhana dapat terdiri dari salah satu jenis berikut:
<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>
Contoh
Kueri yang mencari dokumen yang berisi fase "kuartal terakhir", yang ditulis oleh Theresa atau Lee, dan yang disimpan ke folder MyDocs, menggabungkan tiga kueri dasar sebagai berikut:
"last quarter" author:(theresa OR lee) folder:MyDocs
Tiga kueri dasar adalah:
- "kuartal terakhir"
- author:(theresa OR lee)
- folder:MyDocs
Kueri dasar yang menggunakan sintaksis kanonis adalah:
System.Size:>1kb
Properti
Properti disebut dengan kata kunci, yang dapat menjadi nama properti kanonis di Windows 7 dan yang lebih baru. AQS di UI Windows dapat menggunakan label alih-alih nama properti kanonis, seperti penulis alih-alih System.Author. Di Windows Vista dan sebelumnya dimungkinkan untuk menggunakan label bahasa Inggris terlepas dari bahasa UI. Di Windows 7 dan yang lebih baru, Windows Search hanya mengenali kata kunci dalam bahasa UI default saat ini.
Dukungan untuk Properti Kustom
Di Windows Vista dan yang lebih lama, properti kustom tidak tersedia di AQS. Di Windows 7 dan yang lebih baru, AQS bekerja dengan properti kustom yang terdaftar dengan sistem properti. Untuk informasi selengkapnya tentang membuat properti kustom, lihat Sistem Properti.
Properti DateTime di Windows 8
Pada Windows 8, properti DateTime (seperti System.DateModified) mendukung format tanggal dan waktu kanonis yang ditentukan oleh ISO-8601, secara opsional termasuk zona waktu UTC.
Windows 8 dan yang lebih lama, tanggal-waktu tanpa zona waktu UTC: YYYY-MM-DDThh:mm:ss
Format ini menentukan waktu lokal, terlepas dari pengguna atau lokal sistem.
Windows 8, tanggal-waktu dengan zona waktu UTC: YYYY-MM-DDThh:mm:ssTZD
Format ini menentukan waktu pada zona waktu UTC yang ditentukan.
Penggunaan Kata Kunci dalam Bahasa Lokal
Di Windows 7 dan yang lebih baru, kata kunci mnemonic hanya berfungsi dalam bahasa sistem, seperti kata kunci Jerman hanya pada sistem operasi Jerman, dan kata kunci bahasa Inggris hanya pada sistem operasi bahasa Inggris. System.Author adalah kata kunci kanonis, dan nilai mnemonic untuk properti System.Author adalah Penulis, misalnya. Pengenalan kata kunci kanonis mengkompensasi fakta bahwa kata kunci mnemonic Bahasa Inggris tidak lagi dikenali secara universal pada semua sistem operasi terlepas dari bahasa, seperti halnya di Windows Vista dan sebelumnya.
Catatan
Di Windows 7 dan yang lebih baru, Windows Search mengenali kata kunci hanya dalam bahasa default saat ini, dan bukan dalam bahasa Inggris kecuali bahasa Inggris adalah default saat ini. Kami menyarankan agar pengembang selalu menggunakan sintaksis kanonis sehingga aplikasi mereka tidak akan memiliki masalah bahasa dengan kata kunci.
Sintaks Kueri Tingkat Lanjut Kanonis di Windows 7
Sintaksis kanonis diperkenalkan untuk kata kunci di Windows 7. Contoh kueri dengan properti kanonis adalah System.Message.FromAddress:=me@microsoft.com
. Saat mengkoding kueri dalam aplikasi yang berjalan di Windows 7 dan yang lebih baru, Anda harus menggunakan sintaksis kanonis untuk menghasilkan kueri AQS secara terprogram. Jika Anda tidak menggunakan sintaksis kanonis dan aplikasi Anda disebarkan dalam bahasa lokal atau UI yang berbeda dari bahasa dalam kode aplikasi, kueri Anda tidak akan ditafsirkan dengan benar.
Konvensi untuk sintaks kata kunci kanonis adalah sebagai berikut:
- Sintaksis kanonis untuk properti adalah nama kanonisnya, seperti
System.Photo.LightSource
. Nama kanonis tidak peka huruf besar/kecil. - Sintaksis kanonis untuk operator Boolean terdiri dari kata kunci AND, OR, dan NOT, dalam huruf besar semua.
- Operator <, , >=, dan sebagainya, tidak dilokalkan dan dengan demikian juga merupakan bagian dari sintaksis kanonis.
- Jika properti
P
telah menghitung nilai atau rentang bernama N₁ melalui Nk, sintaks kanonis untuk nilai atau rentang I th adalah nama kanonis untuk P, diikuti oleh karakter #, diikuti oleh NI, seperti yang diilustrasikan dalam contoh berikut:System.Photo.LightSource#Daylight
,System.Photo.LightSource#StandardA
, dan sebagainya.
- Untuk jenis semantik yang ditentukan T dengan nilai atau rentang bernama N₁ melalui Nk, sintaksis kanonis untuk nilai atau rentang I th adalah nama kanonis untuk T, diikuti oleh karakter #, diikuti oleh NI, seperti yang diilustrasikan dalam contoh berikut:
System.Devices.LaunchDeviceStageFromExplorer:=System.StructuredQueryType.Boolean#True
- Untuk nilai harfiah seperti kata atau frasa, sintaksis kanonis sama dengan sintaks reguler. Contoh kueri dengan nilai harfiah dalam sintaksis kanonis adalah:
System.Author:sanjay
System.Keywords:"Animal"
System.FileCount:>100
Catatan
Tidak ada sintaksis kanonis untuk angka di Windows 7 dan yang lebih baru. Karena format titik mengambang bervariasi di antara lokal, penggunaan kueri kanonis yang melibatkan konstanta titik mengambang tidak didukung. Konstanta bilangan bulat, sebaliknya, dapat ditulis hanya menggunakan digit (tidak ada pemisah untuk ribuan) dan dapat digunakan dengan aman dalam kueri kanonis di Windows 7 dan yang lebih baru.
Contoh
Tabel berikut ini memperlihatkan beberapa contoh properti kanonis dan sintaks untuk menggunakannya.
Jenis properti kanonis | Contoh | Sintaks |
---|---|---|
Nilai untai (karakter) | System.Author |
Nilai string dicari di properti pembuat: System.Author:Jacobs |
Rentang enumerasi | System.Priority | Properti prioritas dapat memiliki rentang nilai numerik:System.Priority:System.Priority#High |
Boolean | System.IsDeleted |
Nilai Boolean dapat digunakan dengan properti Boolean apa pun:System.IsDeleted:System.StructuredQueryType.Boolean#True dan System.IsDeleted:System.StructuredQueryType.Boolean#False |
Numerik | System.Size |
Tidak dimungkinkan untuk menulis kueri kanonis dengan aman yang melibatkan konstanta titik mengambang, karena format titik mengambang bervariasi di antara lokal. Bilangan bulat harus ditulis tanpa pemisah selama ribuan. Contohnya:System.Size:<12345 |
Untuk informasi selengkapnya tentang properti kanonis dan sistem properti umumnya, lihat Properti Sistem. Atau, lihat file header publik.
Operator Kueri
Jika properti, p, memiliki beberapa nilai untuk beberapa item, kueri AQS untuk p:<restr> mengembalikan item jika <restr> benar untuk setidaknya salah satu nilai. (<restr> mewakili pembatasan.)
Sintaks yang tercantum dalam tabel berikut terdiri dari operator, simbol operator, contoh, dan deskripsi contoh. Operator dan simbol dapat digunakan dalam bahasa apa pun dan disertakan dalam kueri apa pun. Jangan gunakan operator COP_IMPLICIT atau COP_APPLICATION_SPECIFIC. Beberapa operator memiliki simbol yang dapat dipertukarkan.
Operator | Simbol | Contoh | Deskripsi |
---|---|---|---|
COP_EQUAL | = |
System.FileExtension:=".txt" |
Nilainya adalah string ".txt". |
COP_NOTEQUAL | ≠ - <> TIDAK - - |
System.Kind:≠picture System.Photo.DateTaken:-[]¹ System.Kind:<>picture System.Kind:NOT picture System.Kind:- -picture |
Properti System.Kind bukan gambar. Properti System.Photo.DateTaken memiliki nilai. Properti System.Kind bukan gambar. Properti System.Kind bukan gambar. Operator NOT ganda yang diterapkan ke properti yang sama tidak membatalkan. Oleh karena itu, System.Kind:- -picture setara dengan System.Kind:-picture dan System.Kind:NOT picture. |
COP_LESSTHAN | < |
System.Size:<1kb |
Nilai ini kurang dari 1kb. |
COP_GREATERTHAN | > |
System.ItemDate:>System.StructuredQueryType.DateTime#Today |
Nilai ini lebih besar dari hari ini. |
COP_LESSTHANOREQUAL | <= ≤ |
System.Size:<=1kb |
Nilai ini kurang dari atau sama dengan 1kb. |
COP_GREATERTHANOREQUAL | >= ≥ |
System.Size:>=1kb |
Nilai ini sama dengan atau lebih besar dari 1kb. |
COP_VALUE_STARTSWITH | ~< |
System.FileName:~<"C++ Primer" |
Menemukan item di mana nama file dimulai dengan karakter "C++ Primer". |
COP_VALUE_ENDSWITH | ~> |
System.Photo.CameraModel:~>non |
Menemukan item di mana nilai properti berakhir dengan karakter non. |
COP_VALUE_CONTAINS | ~= ~~ |
System.Subject.~=round System.Search.Autosummary:~~round |
Menemukan pesan yang memiliki string ini dalam subjek, dan akan cocok dengan "aturan putaran g" misalnya. Menemukan semua item dengan Autosummary yang berisi putaran karakter. |
COP_VALUE_NOTCONTAINS | ~! |
System.Author:~!" sanjay" |
Menemukan penulis yang tidak memiliki urutan karakter"sanjay" di dalamnya. |
COP_DOSWILDCARDS | ~ |
System.FileName:~"Mic?osoft W*d" |
Menemukan file di mana nama file dimulai dengan Mikrofon, diikuti oleh beberapa karakter, diikuti oleh osoft w, diikuti oleh karakter apa pun yang diakhir dengan d. Si? dan * karakter tidak ditafsirkan secara harfiah, dan berfungsi seperti karakter kartubebas gaya DOS:
|
COP_WORD_EQUAL | $= $$ |
System.StructuredQuery.Virtual.From:$="Sanjay Jacobs" |
Untuk Windows 7 dan yang lebih baru. Menemukan frasa "Sanjay Jacobs" di semua properti Dari. Kata Sanjay harus diikuti dengan kata Jacobs. |
COP_WORD_STARTSWITH | $< |
System.Author:$<"San" System.Filename:$<"Micro Exe" |
Untuk Windows 7 dan yang lebih baru. Menemukan item apa pun di mana Penulis berisi kata yang dimulai dengan karakter "San". Menemukan file apa pun di mana nama file berisi kata yang dimulai dengan mikro, diikuti dengan kata yang dimulai dengan exe. |
¹ Kurung siku kosong ([]) menunjukkan "tanpa nilai".
Untuk properti string, operasi default adalah COP_WORD_STARTS_WITH atau COP_WORD_EQUAL.
Nilai Kueri
Contoh yang berguna tentang bagaimana nilai kueri dapat dibatasi tercantum dalam tabel berikut.
Nilai/simbol | Contoh | Deskripsi |
---|---|---|
String | auto |
Urutan karakter apa pun yang dapat dicari. String tidak boleh berisi kombinasi spasi kosong atau karakter yang merupakan bagian dari sintaks. Contoh ini mencari kata yang dimulai dengan otomatis. |
String yang dikutip "" | "Kesimpulan: valid" "The "blue"" team" |
Urutan karakter apa pun. String tidak ditafsirkan sebagai bagian dari sintaks. Tanda kutip dapat disertakan dalam kueri jika digandakan. Contoh ini mencari tim "biru". |
Bilangan bulat | 5678 |
Gunakan hanya digit untuk bilangan bulat. Jangan gunakan pemisah apa pun selama ribuan. |
Bilangan titik mengambang | 5678.1234 |
Karena format titik mengambang bervariasi di antara lokal, kueri kanonis tidak dapat menggunakan konstanta titik pecahan. Penggunaan sintaksis kanonis dengan angka titik mengambang tidak aman pelokalan. |
Boolean benar/salah | System.IsRead:=System.StructuredQueryType.Boolean#True System.IsEncrypted:-System.StructuredQueryType.Boolean#False |
Nilai TRUE Boolean. Nilai FALSE Boolean. |
[] | System.Keywords:=[] |
Tanda kurung siku kosong menunjukkan bahwa tidak ada nilai. Contoh ini menemukan semua item yang belum ditandai. |
Tanggal absolut | System.ItemDate:1/26/2010 SystemDateModified 15/10/2002 19:00 |
Menemukan item dengan tanggal 26 Januari 2010. Menemukan item yang dimodifikasi pada 15 Oktober 2002 antara jam 19:00:00 dan 19:00:59. Catatan: |
Tanggal relatif | System.ItemDate:System.StructuredQueryType.DateTime#Today System.DateAcquired:System.StructuredQueryType.DateTime#NextMonth System.Message.DateReceived:System.StructuredQueryType.DateTime#LastYear |
Menemukan item dengan tanggal hari ini. Menemukan item dengan tanggal di bulan berikutnya. Menemukan item dengan tanggal dalam setahun terakhir. Catatan: |
.. | System.ItemDate:11/05/04..11/10/04 System.Size:5kb.. 10kb |
Periode ganda menunjukkan rentang nilai. Menemukan item dengan tanggal antara 11/05/04 dan 10/11/04, inklusif. Menemukan item antara ukuran 5 dan 10kb. |
Pembatasan Cakupan
Pengguna dapat membatasi cakupan pencarian mereka ke lokasi folder atau penyimpanan data tertentu. Misalnya, jika Anda menggunakan beberapa akun email dan ingin membatasi kueri ke Microsoft Outlook atau Microsoft Outlook Express, Anda dapat menggunakan System.Search.Store:mapi
atau System.Search.Store:oe
masing-masing. Tabel berikut ini memperlihatkan beberapa contoh cara membatasi pencarian menurut penyimpanan data.
Membatasi pencarian menurut penyimpanan data | Kata kunci | Contoh |
---|---|---|
File | file | System.Search.Store:file |
Outlook | mapi | System.Search.Store:mapi |
Outlook Express | oe | System.Search.Store:oe |
File offline | Csc | System.Search.Store:csc |
Folder tertentu pada drive lokal | folder | System.ItemFolderNameDisplay:C:"\MyFolder" |
Sumber Tambahan
- Di Windows 7 dan yang lebih baru, opsi menu pintasan dapat tersedia berdasarkan apakah kondisi AQS terpenuhi. Untuk informasi selengkapnya, lihat "Mendapatkan Perilaku Dinamis untuk Kata Kerja Statis dengan Menggunakan Sintaks Kueri Tingkat Lanjut" dalam Membuat Penangan Menu Konteks.
- Kueri AQS dapat dibatasi pada jenis file tertentu, yang dikenal sebagai jenis file. Untuk informasi selengkapnya, lihat Tipe File dan Asosiasi. Untuk dokumentasi referensi properti, lihat System.Kind, dan System.KindText.
Topik terkait