Pull to refresh

Comments 15

Интересно, послежу за циклом, спасибо. Тоже хотел сделать поисковый движок, продвинулся только до первичной обработки страниц и построения прямого и обратного индексов, но в очень примитивном виде. Писал всё сам на С++ и MongDB (насчёт последней до сих пор не знаю, хороший ли выбор).
Хочу продолжить разработку, или даже переписать с нуля. Интересно, как вы реализовали индексирование и поиск.
Спасибо! Индексация в следующей статье.
Сколько времени заняла разработка краулера?
Сложно оценить, так как это у меня хобби-проект, и делал я его в свободное от работы время. В целом наверное недели 2 в режиме «час-два» после работы. В целом первая простая версия была готова в первый же день, но потом меня немного втянуло и я там прикручивал мониторинги и пакетную обработку задач, автоматический деплой в облако и тд :)
google индексирует «примерно 1 330 000» страниц на habrahabr.ru, yandex готов выдать «932 тыс. результатов», т.е. в 4-6 раз меньше, чем выкачано страниц краулером из статьи. Есть какое-то объяснение этому факту? Может было достаточно вытащить ~170 GB?
Частично объясняется дубликатами — часть из них я начал фильтровать только после начала краулинга. Например мой краулер изначально считал страницы habrahabr.ru/post/345672 и habrahabr.ru/post/345672 (разница в слеше в конце) разными.
Вопрос как раз и возник потому, что в статье не встретил упоминания канонизации (url) и поиска дубликатов. Если уникальных страниц все-равно получается много больше, чем в google или yandex, я бы попытался понять причину.
Вы очень хорошо обьяснили. Спасибо. Мои вопросы не по движку, но по поиску.
1) Как часто обходят пауки старые страницы? (Они ведь могут со временем меняться).
2) Существуют ли «официальные» или просто распространеные способы обьявить новую страницу популярным поисковикам?
1) на этот вопрос нельзя ответить однозначно, каждая поисковая система имеет свою политику на этот счет. так же даже внутри одной поисковой системы может существовать несколько разных роботов разного назначения, например один обходит часто быстро меняющиеся страницы, а другой редко все остальные.

2) существуют — например в вышеупомянутом robots.txt можно указать ссылку на файл sitemap, который будет содержать ссылки на страницы сайта. также у некоторых поисковиков есть прямо форма «добавить страницу».
Спасибо за статью!
Подскажите целесообразно ли делать хэширование страниц для борьбы с дубликатами или это излишнее действие? Проверил на маленьких сайтах работает на ура, но есть сайты которые добавляют динамические служебные данные. Интересно как сделано у поисковых систем это. Спасибо

Добрый день! Прямое хэширование будет работать плохо, так как достаточно изменить один бит и весь хэш будет совершенно другим. Но можно попытаться воспользоваться например Locality Sensitive Hashing, оно пытается давать одинаковые хэши близким строкам. См https://en.m.wikipedia.org/wiki/Locality-sensitive_hashing

Есть классический труд «введение в информационный поиск» ( Кристофер Д. Маннинг и другие).
Правда там насколько я помню без особого фокуса на распределенные вычисления и машинное обучение довольно поверхностное, но для знакомства пойдет:)

Ну и не пропустите мои следующие части ;)
Спасибо за отличную статью, ждем продолжения!
Sign up to leave a comment.

Articles