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

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

Впрочем, о чем это я. Ах да, о поиске. Так вот, когда я делал новый раздел файлов, у меня была основная цель: сделать так, чтобы любой человек, зайдя на страницу файлового архива, мог с легкостью и быстро найти то, что ему надо, например, банально введя "aac" и получив список AAC-кодеков. Боюсь показаться слишком самоуверенным, но, похоже, мне это удалось. Как минимум, с технической стороны.

Итак, представляю вашему вниманию небольшое руководство о том, как правильно использовать поиск в файловом архиве.

Руководство

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

Простой поиск

Нет ничего проще, чем вводить искомые слова, вроде lame или qaac. Это обычные слова и поиску все равно, в каком регистре они будут, пусть хоть qAAc — как вам больше нравится. Вы можете добавить версию lame 3.99.4, или архитектуру faac x64, или даже все сразу lame 3.99.4 x64, это тоже будет работать.

А также можно ввести и раздел программного обеспечения вроде плеер или драйвер. Вы можете вводить расширение файла, вроде aac или mp3.

В общем-то в этом и заключается примитивный поиск по файловому архиву. Кажется, выглядит вкусно… Нет? Ну тогда милости прошу в следующий раздел поиска для избранных.

Расширенный поиск

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

В этом варианте поисковый запрос состоит из частей, отвечающих за различные значения каждого конкретного файлового элемента. Иначе говоря, каждый файл содержит в себе следующие параметры:

ПараметрПрефикс для поискаОписание
sections:Раздел
namen:Название
versionv:Версия
archa:Архитектура

Само собой, вы можете комбинировать эти параметры как между собой, так и с простым поиском.

Раздел

Разделов не так уж и много, на данный момент это: s:codecs, s:drivers, s:foobar2000-codecs, s:tools, s:winamp-codecs.

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

Название

Названий довольно много, и я не вижу особого смысла перечислять все их здесь. Разве что добавлю пример использования вроде n:nero-digital-audio.

Как и разделы, названия также можно вычислить только через URL до файла.

Версия

Довольно простой и легко вычисляемый параметр "версия". Он опционален, но если он есть, то обязательно является суффиксом названия в элементе файла. Версия сама по себе практически редко применима, но вы можете попробовать что-то вроде v:1.28

Архитектура

Архитектура на данном этапе вычисляется довольно примитивно и автоматически через имя загружаемого файла с использованием регулярного выражения вида x?64. Параметр можно использовать в виде a:x64, например, для особых любителей 64-битности.

Множественные значения и значения с пробелами

Как наверное вы уже догадались, пробелы в поисковых запросах выполняют роль логического И, таким образом, каждое очередное слово уточняет результаты поиска. Но, иногда бывает нужно показать несколько версий сразу (лично у меня это используется для внутренней обработки загрузочных сниппетов некоторых новостей), это тоже возможно, нужно лишь указать желаемые версии через запятую, которая в данном случае уже играет роль логического ИЛИ. Пример такого поиска n:ape-monkeys-audio v:4.14,4.16. Порой, версии содержат пробелы, но внимательный читатель скажет "постойте, пробелы — это логическое И!" и окажется прав. Чтобы в случае с пробелами логическое ИЛИ продолжало работать, да и в целом, чтобы значения параметров воспринимались как единое целое (а не отдельными словами), нужно указывать значения параметров в кавычках, например n:foobar2000 v:"1.1.11 beta 1,1.1.11 beta 2".

Специальные значения

Итак, закончу пожалуй самым лакомым. Да, буквально вчера у нас появилось первое специальное значение для версий. И это значение… Та-дам! latest. Оно позволяет ни много ни мало отфильтровать результаты, оставив только наиболее свежие версии программ и кодеков. Иначе говоря, вы вводите v:latest и перед вашими глазами представляется файловый архив с самыми последними версиями всех программ. Для сравнения версий и вычисления наиболее свежей используется весьма качественная библиотека, проблем за которой я пока не замечал. Круто? По-моему, очень!

Напоследок

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

Спасибо за ваше внимание!