Поможем!
Для любых проблем поиска в Windows я рекомендую две вещи:
- Прочитайте документацию AQS (Advanced Query Syntax), чтобы вы знали, что делают все специальные символы.
- Знайте, что Windows Search преобразует ваш запрос в точный AQS, и, если вы не конкретны в своих запросах, Windows будет угадывать, что AQS вы на самом деле имели в виду. Результаты могут быть удивительными!
Во-первых, некоторые основы AQS
По умолчанию свойства строкового файла (имя файла, автор и т.д.) Выполняют поиск с помощью COP_WORD_STARTSWITH
$<
, поэтому любое слово (разделенное spaces , - _ () []
и более) начинается с вашего поискового запроса. Другие нестроковые свойства (даты и т.д.) Выполняют поиск с помощью COP_EQUAL
=
или точных совпадений по умолчанию (без подстановочных знаков , *
и ?
буквально).
Во-вторых, если вы выполняете поиск в каком-либо проиндексированном местоположении, то все неиндексированные местоположения в вашем запросе не будут показаны.
В-третьих, нажмите на адресную строку, чтобы увидеть, что AQS Windows Search на самом деле искал. Вы можете игнорировать крошки местоположения и отображаемое имя: оно будет кодироваться в процентах, поэтому декодируйте на сайте, таком как https://www.url-encode-decode.com/
В-четвертых, без документов *
и ?
ведут себя непредсказуемо в AQS, если только они не находятся в запросе ~
COP_DOSWILDCARDS
(имеется в виду, что не-слово начинается с и подстановочных знаков *
или ?
интерпретируются). Поиск в Windows обычно преобразует запросы в ~
запрос. Например, кажется, дикие карты **
и ?
с буквенно-цифровыми символами ищите свойства строки с ~
, но **
без буквенно-цифровых символов ничего не ищет. Также одиночные *
в не ~
запросах обрабатываются как подстановочный знак с COP_WORD_STARTSWITH
$<
.
Давайте проанализируем ваши запросы
(
AQS search-ms:displayname=Search Results in Users&crumb=&crumb=location:C:\Users
Упрощенная crumb=
Ну, без кавычек (
это оператор группировки, когда вы используете AND
или OR
, вы ничего не группировали, поэтому Windows думает, что вы имели в виду, что group ничего не ищет во всем.
*(*
AQS crumb=
Большинство поисков Windows, которые начинаются с *
windows, пытаются преобразовать в crumb=~~query_term
(содержит поиск). *
обрабатывается как обычно в запросе содержимого. В любом случае, в этом случае вы указываете группу ничто, поэтому Windows ищет все группы ничего (или все!)
"("
AQS crumb=System.Generic.String:"("
Кавычки ищут точные фразы (все слова или свойства должны совпадать) и являются литеральными символами, кроме *
?
и ""
стать "
. Это ищет слова, которые начинаются с (
, но так как слова не являются (
он ищет только свойства, которые просто (
*"("*
AQS crumb=Rating:(>=1 <13) OR System.Generic.String:** System.Generic.String:"("*
Это безумие, но Windows Search пытается преобразовать префикс *
за которым следуют определенные специальные символы, в качестве звездных оценок. 1-13 - 1 звезда. Также обратите внимание на мое тестирование, **
без каких-либо буквенно-цифровых символов до или после него ничего не ищет вместо подстановочного знака и непредсказуемо.
Этот полный запрос означает
(1 звезда ИЛИ Слово, начинающееся с нуля) И свойства, которые просто (
. *
будут совпадать ни с какими другими символами, потому что все свойство должно быть (
.
Упрощенно это значит, 1 звезда файлов называется (
**
в запросе фактически отображалась не одна звезда (
файл для меня, но при изменении **
на ***
и обратно на **
он не дал ожидаемых результатов (**
непредсказуемо)
Другие ответы
~="("
AQS crumb=System.Generic.String:~="("
Это не сработало, окна, похоже, ничего не находят, если объем поиска слишком интенсивный. filename:~="("
работает. По сути, найти имя файла, который содержит только (
где-то
"*(*"
AQS crumb=filename:~~"*(*" OR System.Generic.String:"*(*"
Это сработало. Имя файла содержит *(*
с подстановочными знаками ИЛИ любое слово свойства, которое начинается с подстановочных знаков и имеет (
. Обратите внимание, что ~=
и ~~
mean содержат.