Ayo Bantu!
Untuk masalah Windows Search, rekomendasi saya adalah dua hal:
- Baca dokumentasi AQS (Advanced Query Syntax) , sehingga Anda tahu apa yang dilakukan semua karakter khusus.
- Ketahuilah bahwa Pencarian Windows akan mengubah kueri Anda menjadi AQS yang tepat dan kecuali Anda spesifik dalam kueri Anda, Windows akan menebak AQS apa yang sebenarnya Anda maksudkan. Hasilnya bisa mengejutkan!
Pertama, beberapa dasar pada AQS
Secara default, properti file string (Nama file, penulis, dll.) Mencari COP_WORD_STARTSWITH
$<
, sehingga setiap kata (dipisahkan oleh spaces , - _ () []
dan banyak lagi) yang dimulai dengan istilah pencarian Anda. Properti non-string lainnya (Tanggal, dll.) Mencari dengan COP_EQUAL
=
, atau persis cocok secara default (Tidak ada kartu liar, *
dan ?
literal).
Kedua, jika Anda sedang mencari di setiap lokasi diindeks, maka semua lokasi non-diindeks dalam permintaan Anda tidak akan ditampilkan.
Ketiga, Klik pada Bilah Alamat untuk melihat apa yang sebenarnya dicari dengan Pencarian Windows AQS. Anda dapat mengabaikan remah lokasi dan nama tampilan: Ini akan dikodekan persen, jadi decode di situs seperti https://www.url-encode-decode.com/
Keempat, tidak berdokumen, *
dan ?
berperilaku tidak terduga di AQS kecuali mereka berada dalam ~
COP_DOSWILDCARDS
kueri (artinya non-kata dimulai dengan, dan wild card *
atau ?
ditafsirkan). Pencarian Windows biasanya akan mengkonversi pencarian menjadi ~
query. Sebagai contoh, tampaknya kartu liar **
dan ?
dengan karakter alfanumerik mencari properti string dengan ~
, tetapi **
tanpa alfanumerik tidak mencari apa-apa. Single *
di non ~
queries diperlakukan sebagai wildcard dengan COP_WORD_STARTSWITH
$<
.
Mari Menganalisis pertanyaan Anda
(
AQS search-ms:displayname=Search Results in Users&crumb=&crumb=location:C:\Users
Sederhanacrumb=
Yah, tanda kutip (
adalah operator pengelompokan ketika Anda menggunakan AND
atau OR
, Anda tidak mengelompokkan apa pun, jadi Windows mengira maksud Anda adalah grup yang tidak mencari semuanya.
*(*
AQS crumb=
Sebagian besar pencarian windows yang dimulai dengan *
windows mencoba untuk mengkonversi ke crumb=~~query_term
(pencarian yang mengandung). *
diperlakukan seperti biasa dalam kueri berisi. Ngomong-ngomong, dalam hal ini Anda wild card sekelompok tidak ada, jadi Windows mencari semua kelompok yang tidak ada (atau semuanya!)
"("
AQS crumb=System.Generic.String:"("
Kutipan mencari frasa yang tepat (seluruh kata atau properti harus cocok) dan merupakan karakter literal kecuali untuk *
, ?
dan ""
menjadi "
. Ini mencari kata-kata yang dimulai dengan (
, tetapi karena kata-kata bukan (
hanya mencari properti yang adil(
*"("*
AQS crumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("*
Yang ini gila, tetapi Windows Search mencoba mengonversi awalan *
diikuti oleh karakter khusus tertentu sebagai peringkat bintang. 1-13 adalah 1 bintang. Catat juga dari pengujian saya, **
tanpa karakter alfanumerik sebelum atau sesudahnya tidak mencari apa pun selain kartu liar dan tidak dapat diprediksi.
Query lengkap ini berarti
(Peringkat 1 bintang ATAU Kata yang dimulai dengan nol) DAN properti yang adil (
. *
tidak akan cocok dengan karakter lain karena seluruh properti harus (
.
Sederhana artinya, 1 bintang memanggil file (
**
dalam permintaan sebenarnya menunjukkan file non-satu bintang (
untuk saya, tetapi ketika mengubah **
ke ***
dan kembali ke **
sana memberi hasil yang diharapkan ( **
tidak dapat diprediksi)
Jawaban lainnya
~="("
AQS crumb=System.Generic.String:~="("
Ini tidak berhasil, windows sepertinya tidak menemukan apa-apa jika jumlah pencarian terlalu intensif. filename:~="("
tidak bekerja. Pada dasarnya menemukan nama file yang hanya berisi suatu (
tempat
"*(*"
AQS crumb=filename:~~"*(*" OR System.Generic.String:"*(*"
Ini berhasil. Nama file berisi *(*
dengan kartu liar ATAU kata properti apa pun yang dimulai dengan kartu liar dan memiliki a (
. Catatan, keduanya ~=
dan ~~
mean mengandung.