Як влаштовані пошукові системи

Для початку дайте відповідь на питання: «Чому пошук файлу на комп'ютері може займати кілька хвилин часу, а пошуковики в інтернеті знаходять все за одну секунду?».

У цій статті ми розповімо вам, як влаштований Яндекс, як він шукає, а також як вдається досягти настільки мінімального часу пошуку.

Ще один приклад. Раніше, коли не було персональних комп'ютерів, щоб знайти книгу в бібліотеці, потрібно було довго копатися в спеціальних бібліотечних картках. А якби цих карток не було? Пошук однієї книги займав би ще більший час.

І, нарешті, третій приклад - це предметний покажчик книги. Якщо добре придивитися, то предметний покажчик чимось схожий на поштовий індекс. Приблизно також шукає і пошукова система, але є ряд відмінностей.

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

2. У пошукових індексах є всі згадки слів. У предметному покажчику книги дають посилання на використання цих слів всього кілька разів. У пошуковому індексі робот запам'ятовує абсолютно будь-які згадки, а також сторінки, на яких вони знаходяться, номера пропозицій і слів в цій пропозиції. А це дуже важливо для формування видачі. Плюс до всього, у пошукових індексів є ще купа переваг на зразок морфології, словоформ і т.д.

Як же шукає Яндекс по пошуковому індексу? Наприклад, задаємо запит (летить жахливий Бармаглот і пилкает вогнем). На малюнку ви можете побачити, що перераховані всі слова, а поруч з ними по 2 цифри. Перша цифра - це скільки всього таких слів в інтернеті, а друга - це в скількох документах вони вживаються.

Якщо ми подивимося на слово «пилкает», то буде зрозуміло, що це слово зустрічається в інтернеті 11 000 разів в 5 000 документах. А, наприклад слово «і» зустрічає більше 38 млрд. Раз. В принципі, це все зрозуміло й логічно, адже «і» - це союз, який дуже часто використовується в українській мові. Пошуковий індекс знаходить списки всіх документів, де ці слова вживалися, а потім складає видачу, виходячи з цих списків.

Найцікавіше, що для видачі необов'язково переглядати всі 38 млрд. Використання союзу «і», а досить лише знайти списки, де б «і» використовувалося спільно зі словом «пилкает». Хоча зазвичай Яндекс подібні слова, які дуже часто використовуються взагалі не шукає. Зазвичай Яндекс шукає по зв'язкам більш рідко використовуваних слів.

Існує таке поняття, як пошуковий сервер. На зображенні представлена ​​фотографія самого першого пускового сервера Яндекс. Колись він обробляв всі запити користувачів, а розробники раділи кожному новому відвідувачеві.

Адже в той час інтернет був дуже маленький. Як би смішно це не звучало, але фраза на кшталт: «скачати інтернет, а потім вдома його почитаю - була цілком реальною». Тоді на одному такому пошуковому сервері можна було вмістити весь пошуковий індекс інтернету. Зараз, звичайно ж, інтернет розрісся, і говорити про подібні серверах просто смішно. Зараз вже використовується поняття пошуковий кластер.

Пошуковий кластер - це коли весь інтернет розділяється на певні частини, і кожна частина поміщається на певний сервер. Буває таке, що одна частина сайту перебуває на одному сервері, а друга частина сайту на іншому. У Яндекса є великий окремий сервер «Металпоіск».

Як же відбувається пошук? Ви вбиваєте пошуковий запит в Яндекс. Сервер Яндекса фіксує цей запит, а потім роздає тисячам дрібнішим серверів. Кожен сервер шукає за своїм фрагменту. Потім фрагменти збираються в єдине ціле на великому сервері і видаються користувачеві на екрані. Сервер, який розбиває запит, називається «Металпоіск», а більш дрібні сервера - «базовим пошуком».

Далі Анатолій розповів, як влаштовані дата-центри Яндекса.

Раніше Яндекс за своєю традицією використовував букви староукраїнської алфавіту для нумерації дрібних серверів, пізніше закінчилися букви не тільки староукраїнського, але і латинського алфавіту. Зараз же Яндексу довелося відхилитися від традицій і просто нумерувати сервера.

Далі роз'яснимо, що таке репліки і дата центри. Основне правило оргтехніки, ніж її більше, тим частіше вона ламається. Якщо у Яндекса вилетять з ладу кілька машин, то ви просто-напросто не зможете знайти деякі потрібні вам запити. Для того щоб подібних ситуацій не виникало в Яндексі використовують дублюючі машини, які і називаються репліками. Якщо одна з машин виходить з ладу, то тут же включається резервна машина, яка допомагає зберегти повну працездатність системи. Даний процес називається реплікацією. Подібна реплікація існують і між усіма дата-центрами компаніями. У разі, коли повністю вилітає весь дата-центр (кімната, в якій знаходяться всі сервера), то тут же включається резервний дата-центр.

Як з'являється індекс? Для цього в Яндексі є спеціальний робот, який займається тим, що готує все індекси, а потім викладає їх на пошук.

Як працює робот? Робот працює досить просто. Він викачує всі вміст сайтів, розділяє їх на індекси, які пізніше викладає на пошук. Тому інформація в пошуковику Яндекса оновлюється не миттєво, а через кілька днів.

Почнемо з того, що інтернет нескінченний. Насправді багато хто з цим не погодяться, але це факт. Кожен може створити свій сайт, який буде містити певну сторінку під певним номером, а під певним номером він буде видавати певну сторінку. Ясна річ, що при нескінченному числі сторінок, які створювалися людьми, дуже багато сміття. Завдання робота відсівати сміття, відбираючи тільки потрібну і корисну для користувача інформацію.

Друга проблем у роботів - це мінливі сайти. Робот бачить на сайті одне, заходить на цей сайт. Сайт перекидає його на зовсім інший контент. В такому випадку робот знову ж повинен відсіювати подібні сайти.

Також робот зобов'язаний стежити за спамовими сайтами, які постійно намагаються обдурити систему, штучно забравшись в верхівку з видачі.

На завершення, в цій статті відповімо на найчастіші запитання.

1. Як пов'язаний Яндекс.Каталог з чергою в пошуку? Чи будуть якісь переваги, якщо зареєструвати свій сайт в каталозі Яндекса? Так, будуть, по тій причині, що сайт в каталоги вбивають живі люди, тому у робота за допомогою каталогу буде набагато більше інформації про вашому сайті. У будь-якому випадку, для SEO це корисно.

2. Чому пошуковик іноді відповідає по-різному на один і той же запит? З тієї простої причини, що пошуковики орієнтуються на те, щоб дати користувачеві корисну інформацію. Тому варіанти ранжирування сайтів для різних користувачів можуть бути різними.

3. Як сайти розбиваються на кластери? Не можна сказати, що сайти розбиваються на кластери. На кластери розбиваються сторінки сайтів. Все це робиться для того, щоб зменшити навантаження на пошукову систему. В один час у Яндекса був один баг. Якщо користувачі шукали Рамблер через Яндекс, то часто не могли його знайти. А все було в тому, що весь Рамблер лежав на одній машині. І коли багато користувачів зверталися до цієї машини, то, природно, що час її віддачі збільшувалася, і користувачі не могли побачити Рамблер в пошуковику. Пізніше цей баг полагодили, розподіливши на кожен сервер по шматочку сайту.

4. Що означає «шматочки інтернету» або «шматочки сайту»? Сьогодні є таке поняття, як шардірованіе (шард - шматочок інтернету). У Яндекса шардірованіе відбувається приблизно на 10 файлів.

5. Як робот знаходить нові сайти? Робот знаходить нові сайти за всіма можливими джерелами. Робот переглядає посилання, залишені на інших ресурсах, які вже були проіндексовані. Також в пошукових системах існує така кнопка, як «Додати свій сайт».

6. Які пріоритетні сайти до більш частого індексування у роботів? Тут все просто, чим частіше оновлюється сайт, тим частіше його індексує робот. Але варто розуміти, що пошукові роботи не встигають індексувати всі відразу, тому їм доводиться вибирати індексації сайтів по їх ступеня корисності.