суббота, 12 сентября 2015 г.

Проблемы поиска



Регулярно задаюсь вопросом "почему разработчики систем поиска по компьютеру - такие пидорасы?".  Ведь нет ни одной вменяемой реализации этих систем - на MacOSX вечно задалбывает Spotlight, в Linux их море - и Beegle в GNOME и Nepomuk в KDE и Mediascanner в Ubuntu и другие, винда тоже старается не отставать в попытках проиндексировать все потроха ваших жёстких дисков.
И все они чудовищно грузят процессор, жрут память, теребят как встроенный жёсткий диск, так и любые съёмные носители... И всё ради чего? Ради того, чтобы суметь найти потерянный документик раз в полгода? Чтобы выдать бесполезную сводку недавних документов, ссылок и прочей херни, которой место в соответствующих приложениях? Ради заполнения медиабиблиотеки случайно найденными обрывками звуковых дорожек в случайных местах, картинками из игровых ресурсов и приложений или видеороликами оттуда же? А кто-то вообще всей этой хернёй реально пользуется? У кого-то всё это работает "как надо"?

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

Как в случае с Windows 8 или Ubuntu, в которых привычное меню "Пуск" заменили на систему поиска приложений в едином списке со случайным найденным мусором. Пользователю предлагается сперва подождать, пока прогрузится дурацкий список, а потом в вываленной куче говна, нужно глазками искать нужный ярлычок. Удобно до усрачки.

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

Потому, что обычное в ручную или разработчиками ПО сортированное меню Пуск в тысячу раз удобнее самого разофигеннейшего поиска.
И эту простую истину нужно выбить на тупорылых бошках программных инженеров и программистов, которые задумали "клёвую систему поиска медиаконтента и документов".

 Но если уж для чего-то это действительно нужно (как в случае индексирования медиаконтента для DLNA-серверов), то нужно хотя бы выполнить простые правила:

1. Приоритет процесса поиска должен быть самый низший из возможных в системе - на уровне "бездействия". Это относится, как к процессорному времени, так и к вводу-выводу. Почему-то эту простую истину не понимают практически никто - все норовят чтобы их система поиска работала непрерывно и всегда, а юзер мол потерпит, пока наш меговажный процесс завершится. Даже если у юзера 5 Тб контента и овер дохера файлов и при средней длине сессии в пару часов в день, процесс индексации будет вечным.

2. Процесс поиска НИКОГДА не должен загружать процессор на 100%. У вас, дорогие разработчики, конечно нет проблем с перегревом, но у многих пользователей в летнее время года такие проблемы бывают. Они стараются держать свои компы в это время минимально нагруженными. И даже если система охлаждения справляется, мало найдётся желающих послушать рёв всех вентиляторов на полных оборотах из-за того, что там на бездействующем компьютере видите ли индексация идёт. Даже 50% - уже много.

3. Поиск должен быть не спонтанным по принципу "везде", а направленным на конкретные папки, которые пользователь может выбрать. Никому нахер не нужно, чтобы система поиска ковырялась по содержимому папок с программами и какими-то вспомогательными файлами. Поисковые системы как правило целевые - то есть заведомо известна их структура файловой системы, а часто и домашней папки. Это должен быть выбор по умолчанию, остальное пользователь должен добавлять сам по собственному желанию.
Тут важно чтобы применялся White List для поиска, а не Black List для "не поиска". Решения типа добавления в папки исключения файла ".nomedia" - это вообще из области полной дегенерации.
В особенности это касается съёмных носителей. Поверьте, 99% людей не нужна индексация съёмных носителей. Более того, она затрудняет работу с носителем, а иногда делает её невозможной (воткните медленную флешку в Mac OSX и попробуйте с ней поработать, воюя с Spotlight за право открыть папку).

4. Выдача результатов поиска должна использовать самый быстрый из доступных методов.
Пример обратного - Ubuntu. При работе MediaScanner в системе новее 14.04 при открытии стартового меню и начале набора названия программы результат приходится ждать секунд 20-40. Причём если отключить MediaScanner (сделать это можно набив в консоли: "echo manual >> ~/.config/upstart/mediascanner-2.0.override"), скорость поиска программ снижается до 2-3 секунд. Причём не только поиск, но и запуск программ при выключенном MediaScanner'е ускоряется в разы. Это вообще что? Это ж маразм!
В идеале поиск должен мгновенно выдать содержимое индекса, затем начать искать по наиболее вероятным местам, а уж потом всё остальное.

5. Не должно быть ни попыток ни возможности утечки индекса в интернет. Если система поиска и индексации хоть что-то отсылает в сеть - это вирус, а не помощник. Любые самые благие намерения разработчиков не должны быть поводом для того, чтобы копаться в чужом доме. К тому же индекс должен быть защищён - шифрованием или каким иным механизмом, но он не должен стать целью атаки на персональный компьютер. Потому, что индекс должен помогать осуществлять поиск на компьютере пользователю, а не вредителю. Распространение не безопасных систем на широкую массу компьютеров можно рассматривать не иначе, как предпосылку к массовому шпионажу, мошенничеству и уничтожению приватности как таковой.

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

А главный вопрос, на который нужно ответить в первую очередь - "зачем это кому-нибудь может понадобиться?"! Только обозначив проблему, нужно приступать к методу её решения наилучшим образом - и не всегда это поисковый движок с индексацией. Вы бы для начала хотя бы реализовали нормально графический интерфейс поиска в котором будет лёгкая настройка цепочки фильтров, чтобы не приходилось за этим самым поиском лезть в терминал к старой как мир конструкции |grep|grep...
Очень часто файловая система с деревом каталогов оказывается куда более понятным и представительным средством поиска, чем ваша бестолковая куча вываленная системой индексации.

Так, всё, пар выпустил, всем удачного дня.

P.S. К приведённому выше методу отключения mediascanner стоит добавить метод отключения его для всех пользователей:
sudo sh -c "echo manual >> /usr/share/upstart/sessions/mediascanner-2.0.conf"

Комментариев нет:

Отправить комментарий