Опрос
Вы участвуете в программе Windows Insider?
Популярные новости
Обсуждаемые новости

13.11.2008 08:01 | deeper2k

Ваши комментарии и электронные сообщения в очередной раз представили шанс рассказать о особенностях разработки Windows 7. Пользователи оставили немало комментариев, предлагающих альтернативный подход к реализации поиска, поэтому мы подумали, что было бы здорово поговорить о них и их плюсах и минусах. Это является еще одним примером инженерного баланса, которого мы пытаемся достичь в Windows 7. Итак, слово Крису МакКоннелу. -- Стивен

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


Интеграция с файловой системой
Как отметили читатели, одной из возможных реализаций механизма является интеграция индексатора в файловую систему, чтобы при обновлении файла происходило автоматическое обновление индекса. В Windows Desktop Search используется другой подход. При интеграции с файловой системой возникает два момента: необходимо точно определить момент, когда файл подвергается изменениям, и провести индексацию файла до того момента, когда он будет снова доступен для чтения/записи. В файловой системе NTFS в случае изменений в файлах индексатор получает уведомления. Индексатор никогда не выполняет сканирование NTFS - лишь первый раз при создании индекса. Если выполнять индексацию по закрытии файла, то в течение некоторого времени он будет недоступен для файловых операций, покуда не завершена процедура индексации. И тут проявляется масса недостатков такого подхода. Мы предпочли вынести индексатор за пределы файловой системы, поскольку это дает больше свободы, практически не сказываясь на скорости индексации. Вот лишь несколько преимуществ выбранного нами подхода:

1. Требуется меньше ресурсов. Обратные индексы являются всеобщими. Обратные карты индекса конкретного слова соотносятся с каждым документом, содержащем это слово. Индексирование отдельного файла требует обновления индекса на каждое уникальное слово, обнаруженное в документе. Таким образом, изменения в одном документе могут привести к обновлению различных индивидуальных индексов, что может довольно дорого обойтись для системы. Структура индексатора предполагает планирование и накопления изменений для того, чтобы снизить нагрузку на систему в смысле процессорного времени и дискового ввода-вывода. Система остается устойчивой потому, что процедура индексации происходит не только при закрытии файла, и в случае необходимости может быть перезапущена в любой другой момент времени.

2. Файловые операции имеют приоритет над индексированием. Возможность мгновенного закрытия файла и его доступность для дальнейших изменений является необходимым условием, обеспечивающим возможность использования файла приложением. Мы не желаем, чтобы индексирование файла становилось причиной увеличения времени закрытия файла. Поиск файлов, безусловно, важен, но он не важнее самой работы с ними. Однако, мы также не хотим, чтобы каждое приложение самостоятельно решало, включать или отключать индексатор лишь потому, что разработчики хотят обеспечить ему более высокую производительность.

3. Существует масса типов файлов. В состав Windows входят экстракторы (IFilter/IPropertyHandler) для наиболее распространенных типов файлов. Как известно, существует огромное количество других типов файлов, поэтому крайне важно обеспечить разработчикам возможность создания экстракторов для них. В Vista (и Windows 7) экстракторы выполняются в закрытом процессе, гарантирующем безопасность и не влияющем на производительность системы в целом. Если проводить индексирование перед тем, как файл становится доступным, экстрактор может оказать влияние (намеренно или нет) на все проводимые в данный момент файловые операции.

4. Некоторые файлы имеют большую значимость для индекса, чем другие. Если индексирование проводить при закрытии файла, не будет возможности контролировать очередность индексации. Наша же реализация позволяет расставлять приоритеты. Так, к примеру, поиск музыкальной композиции более вероятен, нежели поиск двоичного файла. Если музыкальные и двоичные файлы одновременно подверглись изменениям, индексатор в первую очередь проведет индексацию музыкальных файлов. Некоторые файлы для большинства пользователей не имеют никакого значения, поэтому проводить их индексацию, по крайней мере, неразумно. Некоторых пользователи высказали идею о необходимости индексации всего жесткого диска. Сделать это достаточно просто - просто добавьте нужные вам папки в настройках индексатора (через панель управления "Indexing Options"). Для львиной доли пользователей индексирование системных файлов является пустой тратой своего и процессорного времени, поскольку они никогда не будут искать их, а в большинстве случаев появление в результатах поиска системного файла сочтут недоразумением.

5. Не каждый объект является файлом. Windows поддерживает такие файловые системы, как FAT32 или CDFS, и поэтому ничего удивительного в нашем стремлении обеспечить возможность поиска в таких системах нет. Если интегрировать поиск лишь в NTFS, тогда другие системы останутся за бортом. Многие приложения используют для своих нужд собственные базы данных. Например, Outlook использует базу данных сообщений. Если индексировать лишь файлы, тогда сообщения электронной почты было бы невозможно проиндексировать до тех пор, пока сообщения в Outlook не превратятся в файлы. Или, как вариант, пришлось бы дублировать каждое сообщение в виде файла и в виде записи базы данных Outlook.


Расширенные запросы
Некоторые из наших читателей выразили огорчение отсутствием возможности использования сложных запросов. В большинстве программных продуктов Microsoft присутствует интерфейс для составления сложных поисковых запросов, но, как правило, созданы они для специальных языков (SQL). В Vista мы хотели упростить проблему с поиском методами, знакомыми сегодняшнему поколению пользователей - однострочным полем для поиска. Тем не менее, наша реализация поддерживает расширенные запросы. Поэтому пользователи, знающие язык расширенных запросов и применяющие его для поиска в Интернете, могут с легкостью использовать его и в поле для поиска в Windows Vista.

На использование такого подхода нас натолкнули два наблюдения:

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

2. Было бы разумным предусмотреть интерфейс для расширенных запросов, покрывающий поиск по любым объектным свойствам, но для большинства пользователей он бы оказался слишком сложным и неповоротливым. Как было сказано выше, Windows Search может осуществлять поиск по 300 свойствам, поэтому представьте, каким мог быть интерфейс, позволяющий осуществлять поиск по ним всем. Если включить в интерфейс лишь наиболее распространенные свойства, то каким образом осуществлять поиск по оставшимся? Будут ли эти свойства сгруппированы по приложениям или таким аттрибутам, как время создания/редактирования, имя, права или иным? Некоторые из вас вспомнят функцию Advanced Find из Outlook, но следует понимать, что в Outlook группировку по связанным свойствам гораздо проще понять и реализовать, чем по всей ОС.

При разработке Vista мы учли ранее полученные отзывы, предлагающие обеспечить поддержку расширенных запросов. Благодаря этому в Vista появился язык расширенных запросов, предполагающий достаточно простой синтаксис запроса. Так, к примеру, ввод в строку поиска запроса "from:gerald sent:today" возвратит все письма от пользователя с именем "Gerald", отправленные в течение сегодняшнего дня. Проблемой является то, что большинство пользователей не знакомы с языком запросов. В Windows 7 мы намерены помочь пользователям в использовании языка запросов в зависимости от контекста. Ну а пока рекомендуем ознакомиться с синтаксисом запросов в Vista. Основная часть правил синтаксиса аналогична используемым в Интернете.

Несколько пользователей спросили о совпадениях фрагментов строк в именах файлов, которые мы на текущий момент не поддерживаем. Это является предметом жарких обсуждений по поводу расширенных запросов. С целью эффективно обрабатывать запросы индексатор строит индексы на базе отдельных слов. В Vista дебютировала система поиска по мере ввода информации, реализованная за счет совпадений префиксов проиндексированных слов. Поэтому когда вы вводите ‘foo’, система ищет совпадения, включая в результаты слова ‘food’ и ‘football’. Если ввести ‘foo net’, система возвратит результат со словами ‘food’ и ‘network’. Поэтому если вы хотели отыскать фразу "foo net", тогда в поле для поиска необходимо взять поисковый запрос в кавычки - еще один пример синтаксиса запросов. Наша основная задача - обеспечить возможность поиска по всем возможным объектам, но имена файлов - это отдельный вопрос. По этой причине мы организовали поддержку запросов по суффиксам файловых имен. Если вы введете ‘*food’, поиск возвратит файлы, оканчивающиеся на ‘food’, например, ‘GoodFood’. Это достигается за счет реверсирования имени файла и его последующей индексации как нового слова. Например, реверсирование имени файла ‘GoodFood’ дает нам ‘DooFdooG’, которое мы индексируем как новое слово. Запрос по суффиксу ‘*food’ переводится в запрос по префиксу ‘doof*’ - логично, не так ли? Таким образом, наша реализация поддерживает все совпадения по префиксам для всех объектов поиска и совпадения по суффиксам для имен файлов, но не поддерживает подстрочные совпадения.


Производительность
Многие из читателей говорят об увеличении производительности и мы, безусловно, с ними согласны. Мы всегда стремимся, чтобы в каждом новом выпуске Windows пользователь смог делать больше с меньшими усилиями и с меньшим количеством ресурсов. Мы надеемся, что изменения в механизме поиска позволят всем тем, кто сегодня предпочел отключить службу индексации, пересмотреть свое решение. Даже если на вашем жестком диске царит порядок, а саму идею поиска файлов вы считаете бесполезной, возможно, что поиск в меню Start, поиск в почтовой программе или поиск с помощью Internet Explorer 8 окажется весьма полезным. Мы усердно работали над тем, чтобы увеличить производительность механизма поиска, сделав его неотъемлемой частью Windows. Достигнутые нами результаты заметны в WS4, а в скором времени вы увидите их и в Windows 7. Мы сократили нагрузку на процессор, увеличили время работы от батарей, улучшили интеграцию с системой и увеличили скорость обработки запроса. Кроме того, мы разработали несколько инструментов, которые помогают нам выявлять проблемы с производительностью. Если вы желаете помочь, пожалуйста, направляйте ваши отчеты на электронный ящик idx-help@microsoft.com и мы расскажем, каким образом необходимо проводить измерения производительности, чтобы их можно было анализировать и использовать для дальнейшего совершенствования механизма поиска.

Крис МакКоннелл (Chris McConnell),
ведущий инженер в команде Find and Organize


Источник: http://blogs.msdn.com/e7ru
Перевод: deeper2k

Комментарии

Не в сети

Поиск полезен для кого и как часто?

Если человек новичок за компьютером и он грабит музыку с дисков в папки по умолчанию, о которых он что-либо не знает. Или сохраняет документы, просто нажимая кнопку "Сохранить", даже не удосуживаясь взглянуть в адресную строку. И имена файлам даёт как "111.doc" "untitled01.mp3", тогда да, поиск для него - гениальное решение. И будет полезным каждый день, целый день. Ибо лишь только так он и сможет находить свои документы.

А если человек уже мудрёный хотя бы шестью месяцами работы, то он понимает, что нужно давать "говорящие" имена файлам и группировать их в папки по контексту. Тогда и искать не нужно. Где моя Мадонна? Я храню мою музыку на диске Д, в папке "Музыка". А в ней у меня алфавитные подпапки. Значит Мадонна будет в Д:\Музыка\М\Мадонна\. Логика работает быстрее индексирования.

Вот что если действительно придётся искать, так это файл, о котором не было известно ранее. Ты не знаешь точно его имени или местоположения. Чаще всего это, для опытного пользователя, исполняемый файл какой-либо программы, который необходимо запустить с особым параметром. Или которому нужно изменить файл конфигурации. Вот в этом случае поиск - идеальный инструмент. А наш друг из Микрософта, хочет перевернуть всё с ног на голову. Известные файлы пользователю индексировать в первую очередь, а неизвестные - во вторую, или не индексировать вообще. А что, хорошая идея. Прям как слайд-шоу на рабочем столе.

13.11.08 12:46
0
Не в сети

ну почему же с ног на голову.
Вот у меня 80 гигов музыки. Некоторые группы я не слушал вообще.
А тут услышал песню, захотел найти у себя - запускаю locate32 и ищу по названию песни.
если виндовский поиск будет лучше буду пользоватся им.

13.11.08 14:48
0
Не в сети

Не надо так прямо ругать идею поиска. ПК секретаря мне только стоит вспомнить, так мурашки по коже бегут. Там поиск необходим. А потом, зачем мне включать логику, что-то самому сортировать. Пусть поиск за меня работает.

13.11.08 17:34
0
Не в сети

Если не включать логику, то придётся включать память. Чтобы было, что вписать в строку поиска. А память включать сложней, чем логику. Как я уже писал раньше, если нужной найти песни Мадонны, то я иду на диск с мультимедиа и в папке с музыкой легко нахожу её в папке на букву «М». А если мне нужно не пойми где найти документ, в котором я писал что-то типа: "Прошу предоставить..." а может "Прошу обеспечить..." или "Необходимо обеспечить", то ты хрен объяснишь своему поиску, что тебе нужен файл "примерно вот с таким смыслом слов". А если у тебя таких файлов сотни, как в случае секретариата, то... тогда вообще жопа. Поиск без предварительной классификации данных - мёртвый инструмент. Вернее, это как монетку подбросить. Если вспомнил точно содержание или название, то найдёт. А ошибся - пролетел, пиши новый документ.

Так что, при выборе между классификацией и поиском, выбор всегда должен быть в пользу классификатора. А поиск не должен использоваться для повседневных задач. Это всё равно, что жить в доме и все вещи находить только исключительно средствами своей собаки-ищейки: "Тоби, ключи!", "Тоби, полотенце", "Тоби, презерватив". Странно это...

13.11.08 21:04
0
Не в сети

никто не спорит про то что долен быть порядок.
но все мы люди и не можем быть идеальными.

Допусти я качаю много файлов, поначалу они у меня лежали аккуратно: d:\dowloads\prog , d:\dowloads\pic d:\dowloads\text
затем в спешке или по причине лени, поздно ночью качается некая программа и пару страниц сохраняется "на потом почитать".
И все начало бардаку положено. Кроме того поиск еще можно использовать для поиска дубликата, например некой программы разных версий.

Вобщем newfriend поисковые программы существуют пока на нех есть спрос, и мне кажется вы долго будете оставатся в меньшинстве, которое всегда помнит где что лежит.

Насчет музыки, а если на букву М есть 120 исполнителей и известно только название песни??? Вы будете искать по алфавиту в каждой папке или поиском??

14.11.08 13:25
0
Не в сети

Я ж не о том пишу, что долой поиск и айда тотальная систематизация. Мне показалось, что поиск становится повседневным рабочим инструментом, когда на самом деле он, скорее для исключительных случаев, когда что-то потерялось или о файле известно немногое.

14.11.08 16:02
0
Не в сети

Плохо, что копи-пасте не работает. Вводить надо. Дурдом.

01.12.08 02:37
0
Для возможности комментировать войдите в 1 клик через

По теме

Акции MSFT
420.55 0.00
Акции торгуются с 17:30 до 00:00 по Москве
Все права принадлежат © ms insider @thevista.ru, 2022
Сайт является источником уникальной информации о семействе операционных систем Windows и других продуктах Microsoft. Перепечатка материалов возможна только с разрешения редакции.
Работает на WMS 2.34 (Страница создана за 0.041 секунд (Общее время SQL: 0.023 секунд - SQL запросов: 67 - Среднее время SQL: 0.00035 секунд))
Top.Mail.Ru