Некорректная работа стандартного поиска операционных систем Windows

в 12:45, , рубрики: windows, Windows 8, Песочница, метки:

Внимание!

1. Введение

К написанию статьи меня побудило желание внести свои пять копеек в обсуждение одного из последних выпусков (на данный момент) самой популярной среди пользователей операционной системы Windows. А также состояние растерянности и недоумения, если окажется, что описываемый мною ниже баг в системе поиска действительно является «архитектурной особенностью продукта», как мне ответили специалисты поддержки Microsoft. Изложенный ниже материал представлен на основе моих экспериментов с поиском в операционной системе Windows-8-Pro-64bit (установлена самостоятельно на «чистый» ноутбук, лицензионная, активированная). Подобные опыты проводил и ранее на ноутбуке с предустановленной системой Windows-7-HomeBasic-64bit. В обоих случаях результат был одинаков.
По моему мнению, в поисковом модуле указанных выше операционных систем (подозреваю и не в них одних) серьезный баг механизма поиска. Хотя, как я уже упомянул выше, специалисты Microsoft считают, что это не баг, а фича.

Вот кратко суть:

1. Поиск только по именам файлов работает некорректно, а именно – файл будет найден, только если выполняется одно из условий:
a) искомая последовательность символов является началом слова;
b) искомая последовательность символов расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других.

2. Поиск по именам файлов и содержимому файлов работает некорректно, а именно – файл с нужным нам содержимым будет найден, только если выполняются два условия:
a) тип файла включен в перечень типов, для которых операционная система выполняет текстовый поиск;
b) искомая последовательность символов либо является началом слова, либо расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других.

Кого это заинтересовало, могут ознакомиться с техническими подробностями моих опытов в изложенном ниже материале.
Небольшое примечание: так как для открытия описываемых мною окон элементов и настроек существует более чем один способ, я избрал как точку отсчета панель управления Windows. Ее можно открыть, нажав сочетание клавиш Win+X и выбрав в появившемся списке пункт «панель управления».

2. Описание системы поиска

Начну с того, что система поиска является компонентом операционной системы. Откроем настройку компонентов Windows: панель управления → программы и компоненты → включение или отключение компонентов Windows. Называется наш компонент – Windows Search. Если его отключить (убрать галочку из соответствующего квадратика), то после перезагрузки родной поиск Windows перестает работать, а из окна проводника исчезает поле для ввода поисковых запросов в правом верхнем углу окна.
КомпонентПоиск

Поле поиска

По умолчанию компонент, естественно, включен. И при вводе первого же символа в поле поиска, система приступает к поиску, не дожидаясь ввода полного запроса. Это так называемый «живой» поиск, сейчас так модно. Вспомним, что в Windows XP для начала процесса поиска было необходимо дать команду – нажать кнопку «Найти».

Составляющей частью системы поиска, служащей для ускорения процесса поиска, является служба индексирования содержимого с аналогичным названием Windows Search, тип запуска – автоматический, отложенный. (На рисунке ниже данная служба отключена).
Служба индекса

Для настройки служб открываем: панель управления → администрирование → службы. Свойства выделенной службы можно посмотреть, открыв контекстное меню – клик правой кнопкой мышки. Как я понимаю, данная служба индексирует определенное содержимое (названия, свойства, содержание файлов) в указанных ей расположениях и заносит эту информацию в свою базу данных. И в последующем поиск происходит уже по этой базе, которая хранится в «C:ProgramDataMicrosoftSearch», тем самым сокращается время поиска.

3. Настройки системы поиска

Настройки поиска сосредоточены аж в трех местах, видимо для удобства. При этом некоторые из них встречаются более чем в одном из этих трех мест, некоторые только в одном. Записываем минус на счет Microsoft. (Некоторые настройки остались для меня загадкой). Вот места расположения этих настроек:
3.1. Панель управления → параметры индексирования;
3.2. Панель управления → параметры папок (вкладка поиск);
3.3. Окно проводника Windows → активируем строку поиска (ставим в нее курсор) → в главном меню окна появляется вкладка «поиск», кликаем ее, если не раскрыта.

Пройдемся по этим местам и кратко рассмотрим параметры поиска.

3.1. Панель управления → параметры индексирования.

В параметрах индексирования нам предоставляется возможность указать, что и где будет индексироваться. Пока плюс в копилку Microsoft. Справка Microsoft не рекомендует выбирать много индексируемых мест, например папки Windows, Program Files, так как, по ее мнению, пользователям там искать нечего. Кроме того индексирование (перестройка индекса) процесс длительный.
Параметры индекса1

Параметры индекса2

Как видно из рисунка каждому типу файла сопоставляется нужный фильтр, а индексировать можно или только свойства файла или и свойства и содержимое. А это значит (о чудо!), что мы, например, можем набрать в строке поиска проводника имя нашего музыкального божества, и он будет найден по музыкальным тэгам. Правда не учитывается состояние/наличие тех самых музыкальных тэгов в наших любимых, часто безликих mp3-файлах. Ведь не редкость и имена типа track_01.mp3.
Кстати путь (расположение) файла – это еще и свойство файла, так что надо быть готовым увидеть в результатах поиска все файлы в пути которых есть слово, набранное в поисковом запросе. По мне, так это уже лишнее.
В итоге мы имеем замудреный поиск. А, как говорит, философия языка Python – простое лучше, чем сложное. Поэтому служба индексирования у меня остановлена.

3.2. Панель управления → параметры папок (вкладка поиск).

В параметрах папок сосредоточены наиболее важные, на мой взгляд, параметры поиска.

Параметры раздела «Как искать» применяются и к индексируемым и к неиндексируемым расположениям. Нужный и понятный всем параметр «Искать частичные совпадения» в комментариях не нуждается. Значение параметра «Не использовать индекс при поиске системных файлов в папках» для меня осталось загадкой. Ведь в параметрах индексирования уже указано, что и как индексировать.

Из названия следует, что параметры раздела «Поиск в неиндексированных расположениях» применяются только к неиндексированным местам.
Значения параметров понятны. В наличии возможность искать в архивах – еще плюс. Следующий важный параметр «Искать по именам файлов и содержимому». Что сказать? Порадовали, и честно предупредили – не все сразу и сейчас.
ПараметрыПапок

3.3. Окно проводника Windows → при активированной строке поиска в главном меню окна появляется вкладка «поиск».

Ну и третье место для настройки параметров поиска любое окно проводника Windows, стоит активировать поле поискового запроса и в главном меню окна появляется вкладка «поиск»:
МенюОкнаПоиск

Здесь много полезных фишек, в том числе только здесь и настраиваемых. Например, поиск только в текущей папке, либо и во всех вложенных тоже. Можно ограничить круг поиска по дате изменения файла, типу, размеру и другим свойствам. Ими я не пользуюсь, дабы потом не терзали сомнения. Фишка повторения поиска в интернетах (однако!), журнал поисковых запросов, а также дополнительные параметры (это как раз те, что мы уже обсудили выше).

4. Устранение неполадок и собственно баг

Начну с того, что в операционную систему встроены модули для поиска и устранения различных проблем. Думаю, фишка нужная, но сразу скажу – меня не спасла.
Итак открываем: панель управления → устранение неполадок → просмотр всех категорий → поиск и индексирование. Почему бы не показать сразу все категории? Не так уж их и много, на мой 14 дюймовый экран помещаются. Запускаем устранение неполадок поиска, в открывшемся окне кликаем «Дополнительно», кликаем «Запуск с правами администратора», кнопка «Далее». Опять новое окно с выбором проблемы, ставим галочку «Файлы не отображаются в результатах поиска» – дошли наконец до моего горя! Жмем «Далее» и получаем вот такой результат работы диагностики:
Диагностика

Как видим это касается службы индексирования (которая в тот момент была включена и работала). Разрешения для каталогов службы индексирования я не трогал, да и не знал о существовании этих каталогов, пока не увидел это окно с результатами диагностики. Напомню, где эти каталоги: «C:ProgramDataMicrosoftSearch».
Способ исправления этой ошибки я не нашел, и думаю уже незачем (служба индексирования у меня ведь отключена теперь). Да и по смыслу следует, что это касается только индексируемых расположений. А моя проблема актуальна для всех расположений.
Настало время детально разъяснить мою проблему. Сразу поясню, что состояние службы индексирования («работает» или «отключена») значения не имеет.

4.1. Поиск по имени файла.

Итак, в первой части эксперимента в глобальных параметрах поиска (относящихся к любым размещениям, индексированным и нет) активируем параметр «Искать частичные совпадения». Далее для неиндексированных расположений (в моем случае – для всех) снимаем галочку «Искать по именам файлов и содержимому», чтобы поиск выполнялся только по именам файлов. Приступаем к опытам. В исследуемой папке размещены несколько файлов различных типов:
ОпытныеФайлы

Набираем в строке поиска fa и видим:
Ex-fa

Казалось бы, Windows Search с задачей справился, даже результаты подсвечены желтым цветом. О чем еще мечтать? Но где же файл SearchFalse.vsd? Разве fa не часть имени SearchFalse.vsd? Может дело в регистре? Но в примере выше найдены имена, где f и в верхнем и в нижнем регистре. Для успокоения введем Fa и увидим, что результат не изменился. Хотя бы с регистром проблем не имеем!

Попробуем ввести cm, получим:
Ex-cm

Как будто-бы все в норме.

Вводим ro:
Ex-ro

«Нет элементов, удовлетворяющих условиям поиска» – как же так, братья и сестры? Три файла удовлетворяют условиям поиска (Error.cmd, Error_critical.txt, Wrong.txt), но они не найдены. Все пропало?
Вот что мы пока имеем: в поле поиска вводится последовательность символов, которая заведомо есть в названии файлов. Но в результатах поиска содержатся только файлы, у которых заданная последовательность является началом имени, или началом расширения, или расположена после дефиса.
Но это противоречит, уверен не только моему, представлению о принципе работы поиска!

Попробуем хитрость, введем первым символом запроса «звездочку» *ro:
-Ex-*ro

Свершилось, файлы найдены! Но уже без чудной желтой подсветки. В справке про такие хитрости нет упоминаний. Развитие событий в целом настораживает.

4.2. Поиск по имени и содержимому файла.

Орешек знаний тверд, но мы не привыкли отступать… Включаем настройку «Искать по именам файлов и содержимому», чтобы теперь искать и по содержанию файла. В уже знакомой нам папке в пяти файлах (Error.cmd, Fail.xlsx, Foul.jpg, Mistake.bat, Wrong.txt) есть одинаковое содержимое:

Get off My Cloud
As Tears Go By
Paint_It_Black
Mother's Little Helper
Lady-Jane

Файл Foul.jpg – это текстовый файл с измененным расширением.

Набираем в поле поиска tea, (чтобы соответствовало началу слова Tears):
Ex-tea

Вроде бы удача, только файл Foul.jpg не найден. Но это можно объяснить тем, что Windows понятно не считает его текстовым и текст там не ищет. Тут возникают вопросы: где поиск Windows берет информацию о типах файлов и второе, главное, – как заставить искать текст там, где мы этого хотим. Что касается первого – то, видимо, в реестре. А вот со вторым не ясно, где найти эту волшебную настройку? Ответа я опять не нашел. В качестве примечания отмечу, что в файлах .pdf текст найти можно.

Усложним задание, набираем в поле поиска bla, (чтобы символы шли после знака подчеркивания):
Ex-bla

Файлы найдены, но говорить об удаче еще рано. Вводим jan, получаем тот же результат. Что ожидаемо.

Пробуем еще более усложнить задание, набираем запрос ear:
Ex-ear

Те четыре файла, которые должны быть найдены, отсутствуют. Снова неудача, но к которой мы должны быть готовы. У нас есть ответный ход! Вводим *ear:
Ex-*ear

На этот раз неудача, неожидаемая, которая вызывает уже уныние. Неужели тут нужен другой волшебный символ, заменяющий начало слова? Мною опробованы: ~, @, $, %, -, !, даже пробел. Но все тщетно – файлы не найдены. Кстати если ввести впереди дефис, то результат поиска – все файлы кроме pe.pdf, опять загадка.

4.3. Выводы.

На основании всего изложенного выше можно сделать вывод, что механизм поиска одинаков и для поиска по именам файлов и для поиска по именам и содержимому. Ошибка, на мой взгляд, одна и весьма критическая, так как приводит к неполным результатам поиска. Кроме того вводит в заблуждение человека логичного в своем мышлении и вынуждает строить хитрые догадки.
Результат – жирный минус Microsoft. Радует только то, что баг лечится хотя бы для поиска по именам файлов.

5. Диагноз

Можно подвести неутешительные итоги:

1. Поиск только по именам файлов (с выключенным параметром «искать по именам файлов и содержимому») работает некорректно. А именно – файл будет найден, только если выполняется одно из условий:
a) искомая последовательность символов является началом слова;
b) искомая последовательность символов расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других, определять перечень которых считаю бесполезной тратой времени.

Этот баг лечится использованием в начале искомой последовательности спасительного символа * «звездочка».

2. Поиск по именам файлов и содержимому файлов (с включенным параметром «Искать по именам файлов и содержимому») работает некорректно. А именно – файл с нужным нам содержимым (нас интересует именно содержание файла) будет найден, только если выполняются два условия:
a) тип файла включен в перечень типов, для которых операционная система выполняет текстовый поиск;
b) искомая последовательность символов либо является началом слова, либо расположена после некоторых символов типа дефиса, точки, подчеркивания и возможно других, определять перечень которых считаю бесполезной тратой времени.

Лекарство от этого бага пока мною не найдено.

Чуть не забыл, краткое описание этой проблемы отправлено мною (после проверки подлинности системы) в поддержку Microsoft. Ответ был получен, надо сказать, оперативно, но вера в человечество была потеряна. В ответе сообщалось:
«Информируем Вас о том, что речь идет о нормальной работе продукта — такова его архитектурная особенность. Дополнительную информацию по интересующему Вас вопросу Вы можете найти, обратившись на наши порталы – support.microsoft.com и technet.microsoft.com».
Как жить дальше? Это что – действительно архитектурная особенность или меня вежливо послали? Склоняюсь к мысли, что все же первое. Хотя лучше было бы второе, ведь архитектурные баги, как я понимаю, заплатками не лечатся! Значит минусы уже не пишем – это «Epic Fail»!

6. В качестве заключения кое-какие мысли, в том числе о причинах явления

В операционной системе Windows XP такого поведения системы поиска не наблюдается, поиск работает, как и принято в сфере информационных технологий. Настройки сосредоточены в одном месте и понятны. Разве что поиск не «живой», но мне этот «живой» поиск только мешает: я еще не ввел запрос, а какие-то потуги уже начинаются. В поиске Google эта фишка хоть отключается. Похоже, спецам Microsoft было поручено внедрить какую-нибудь инновацию и в систему поиска. Так «оживили» бы его, да плюс сделали прикольную подсветку результатов – и всем счастье! Зачем же ломать сам принцип, зачем трогать основы? Инновационный поиск, открываемый из боковой панели Windows 8, ищет файлы только в индексированных расположениях, с учетом бага, его ценность для меня теряется.
Еще небольшое замечание и заканчиваю. Пока гуглил свою проблему прочитал ряд статей Вадима Стеркина (aka Vadikan на oszone.net). Например: http://www.outsidethebox.ms/9973/ и http://www.oszone.net/10893/Windows7_Search_Part2. В его блоге и на форуме oszone.net прямо хвалебные песни о Microsoft. Справедливости ради надо сказать, что в статьях содержится нужная и полезная информация. Но вот в отношении Windows Search складывается впечатление, что сознательно оставлены за кадром примеры поиска, когда искомая последовательность символов расположена, скажем в конце слова. Невольно вспоминается басня про кукушку и петуха…

Автор: LeoWan

Источник

Поделиться

* - обязательные к заполнению поля