Когда-то давно у меня была идея написать собственную поисковую систему. Это было давно, я еще училась в университете. Я очень мало знал об искусстве разработки больших проектов, но прекрасно разбирался в десятках языков программирования и протоколов.
Теперь я предпочитаю монстров, да…
В то время было не очень хорошо известно, как они работают. Статьи были на английском языке и очень редки. Некоторые из моих знакомых, которые знали о моих исследованиях, в том числе те, кто родился во время наших разногласий, теперь извлекли хорошие уроки на основе меня и найденных ими документов и идей, и вообще изобрели новые методы поиска. Интересный проект. Эта работа привела, в частности, к новым разработкам в различных крупных компаниях, включая Google, с которой я не имею прямой личной связи.
На данный момент я сам изучаю поисковые системы от начала до конца, со многими оттенками расчетов PR, сборами статистических телеграмм, изучением ранжирования, ноу-хау и рекламы. Скорость индексирования составляет около 500 000 страниц в день. Все это работает на двух моих домашних серверах, и на данный момент я эскалировал систему примерно на пять бесплатных серверов, к которым у меня есть доступ.
Здесь я впервые публично объясню, что произошло со мной лично. Многих интересует, как работают Яндекс, Google и почти все известные мне поисковые системы.
Для создания такой системы требуется много работы, и в общем случае решить большую ее часть практически непрактично, но есть некоторые хитрости, уловки и хорошее понимание того, как материал работает на компьютере. Примером этого является перерасчет PR. Уже невозможно уместить большую оперативную память, когда у вас десятки миллионов страниц, особенно если, как я, вы жадны до информации и хотите сохранить более одного номера. . Другой задачей является хранение и обновление индексов по крайней мере в одной двумерной базе данных, соответствующих списку документов, в которых встречается определенное слово.
Google, по одной из оценок, поддерживает более 500 миллиардов страниц в индексе. Это невозможно, если каждое слово находится только на одной странице и хранить нужно один байт. Поскольку необходимо хранить по крайней мере идентификатор страницы, будет храниться четыре байта, а объем индекса составит не менее 500 ГБ. На самом деле, в среднем на странице появляется в 10 раз больше слов. Объем информации на одно появление редко бывает меньше 30-50 байт, а весь индекс увеличивается в тысячи раз. И как его обновить?
Ну, как все это работает, постепенно обучая вас, как постепенно считать P, текст миллионов и миллиардов страниц, как хранить их адреса, как быстро искать адреса, как быстро искать различные части меня. Расскажите, как организована база данных и как постепенно обновлять индекс сотен концертов. Возможно, там будет объяснено, как запускать алгоритмы обучения.
В настоящее время объем поиска в индексе составляет 57 ГБ, увеличиваясь примерно на 1 ГБ каждый день. Объем сжатого текста — 25 ГБ, и я храню много другой полезной информации.