CopyMaster: работа над индексатором началась
После того, как был сделан прототип загрузчика файлов, оказалось, что есть некторые вещи, которые я не учел во время проектирования системы хранения. Вначале я планировал сделать так, что все страницы будут храниться в папках, отражающих структуру доменных имен. Например, если у нас есть страница по адресу http://www.site.ru/folder2/page.html, то на диске она будет записана в файл page.html, который будет сохранен в папке x:\sites\ru\site\www\folder2\
Вроде бы все достаточно просто и очевидно, но тут я пришел к мысли, что в папке x:\sites\ru окажется столько папок, сколько доменов второго уровня есть в зоне RU. Естественно, что это будет чересчур, так как это количество будет измеряться сотнями тысяч. Какое же решение есть из этого выхода? Решение есть, и оно достаточно простое, чтобы им не воспользоваться. Это решение используется во всех файловых хранилищах, где папками верхнего уровня являются названия проектов.
Для использования этого метода достаточно разместить наш файл в папке со следующей структурой:
x:\sites\ru\_s\_si\_sit\site\www\folder2
Как видно из примера, в папке ru может быть не более 36 папок (по числу цифр и букв в латинском алфавите), каждая из которых будет содержать тоже не более 36 подпапок. Таким образом количество папок, находящихся в папках вида _ххх и содержащих собственно сайты, будет в среднем в 40 тысяч раз меньше, чем если бы мы сохраняли их в одной папке для каждого из доменов первого уровня.
Однако, тут есть небольшой нюанс. Многие домены первого уровня имеют достаточно много поддоменов. Например narod.ru или ukoz.ru. Кроме того, не стоит забывать о зонах org.ru, net.ru и им подобным. Эти поддомены представляют собой отдельные, чаще всего не связанные между собой сайты. Так что было бы естественно предположить, что в этом случае стоит поступить с такими поддоменами так же, как и с доменами второго уровня. Но, учитывая, что доменов третьего уровня будет намного меньше, чем доменов второго уровня в основных зонах, можно применить двухуровневое разбиение. Таким образом страница по адресу http://site.narod.ru/folder/page.html будет храниться в файле page.html в папке
x:\sites\ru\_n\_na\_nar\narod\_s\_si\site\folder\
Правда, в этом случае придется поступать таким образом со всеми доменами третьего уровня, которых в некоторых зонах может быть достаточно много. Даже если это домен вида www.site.ru. Налицо некоторая избыточность, зато в этом случае упрощается алгоритм формирования имен папок.
Другой вопрос, который возникает параллельно с первым - как поступать с доменами второго уровня, чья длина меньше трех символов? В принципе, можно просто размножать последнюю букву до нужного количества. В общем, это не самая сложная проблема.
Правда, есть другой вариант хранения файлов. Мы просто сохраняем все домены в таблице в базе данных, присваивая им в качестве идентификатора хеш, вычисляемый по алгоритму md5, а затем поступая так же, как в первом случае - создаем в папке для сайтов по три подпапки. Таким образом страница http://site.ru/folder/psge.html будет сохранена в следующем файле: x:\sites\e\e5\e51\e518de50a1b38ef43\folder\page.html
Данный подход не очень подходит для поиска сохраненных сайтов вручную, но разве кто-то будет это делать руками? Для этого можно написать программу, которая в считанные секунды отыщет папку искомого сайта и покажет ее содержимое.
Далее, рассмотрим вопрос о том, какие сайты стоит индексировать, а какие не стоит. Например, для русскоязычного сегмента поисковиком по-умолчанию является Яндекс. Кроме того, не секрет, что поисковая оптимизация проводится именно для Яндекса. Из этого можно сделать вывод, что стоит ориентироваться на те сайты, которые есть в индексе Я, так как все запрещенные к индексированию сайты можно в расчет не брать. Таким образом мы сможем избавиться где-то от половины ресурсов, так или иначе забаненных или зафильтрованных Я. Но если подумать более конструктивно, можно понять, что это очень неверный подход. Хотя бы из-за того, что мир пользуется не одним яндексом, и что наложенный яндексом фильтр или бан не будут однажды сняты. Поэтому, стоит не расслабляться, а, наоборот, закатать рукава, и натравливать индексатор на весь русскоязычный сегмент.



Последние комментарии