Как търсачката „вижда“ уеб страниците

юни 13, 2008 от Васил Тошков
Категории: SEO, Програмиране 

Търсачките на практика „виждат“ страниците в Интернет подобно на хората, разбира се, когато умишлено не е представено друго и/или скрито съдържание на търсачката. Има обаче няколко различия относно това как хората и търсачките отсяват ценната информация от страницата. Ще се опитам да представя процеса структуриран във времето.

1. Търсачката сваля файла на страница.

Това най-често е файл с HTML структура, но може и да е използван друг език за форматиране, като XML, примерно. Възможно е търсачката да индексира и други видове файлове (документи), но в тази статия ще говоря за страници, форматирани с markup езици.

2. Извличане на съдържанието от страницата.

Общо взето всички markup езици са създадени с цел съдържанието от тях лесно да бъде извлечено. В общия случай това е текстът между символите „>“ и „<“. Всичко останало се смята за код или „meta“ данни. В зависимост от търсачката може да се извличат и данни от „meta“ данните.

3. Премахване на специалните символи от съдържанието.

До тук от страницата е останал само текстът и то форматиран на един ред. Следващата стъпка е търсачката да се отърве от всички специални символи, които не носят никаква полезна информация. Такива са, примерно: точки, тирета, удивителни, въпросителни, знак за процент и т.н. Специалните символи се заместват с интервали при някои търсачки.

4. Премахване на „Stop Words“.

До тук имаме съдържание на един ред, което представлява само думи, разделени с интервали. Време е да се отървем от думите, които не носят никаква информация. Такива са, примерно, английските: and, or, if, about и т.н. В зависимост от търсачката могат да се премахват и „Stop Words“ на кирилица.

5. Определяна на ключовите думи от текста.

До тук имаме само подбрани думи, разделени с интервали. Време е да се определи кои от тях са ценни и кои по-малко. За целта се сравняват думите всяка със всяка и се създава списък на повтарящите се думи, като тези, които се срещат най-често, са в началото на списъка.

В зависимост от търсачката, може да се изследват думите за положение, гъстота, подчертаване и т.н. Също така при сайтове с много страници, се отделя уникалната за всяка страница информация от тази, която се повтаря. Същото се прави и с изходящите връзки от страницата.

Оттук нататък всяка търсачка подхожда индивидуално с информацията, с която разполага. Един ефикасен метод е всички думи да се сортират в списък спрямо повторенията им. Така съдържанието на всяка страница ще е един вертикален списък с думи, всяка с индекс на повторенията й в текста.

Подобна структура е много лесно да бъде представена в релационна база данни. Оттам релационния модел подпомага бързото и лесно структуриране на информацията. Процеси, като търсене и сортиране при подобен списък в релационна база данни, са максимално бързи.

Някъде между всички тези точки се анализират изходящите връзки на страницата, за да може роботът да стигне и до други страница от конкретния или друг сайт. Този процес е по-сложен от процесът на „Data Mining“ (отсяване на ценното в съдържането) и ще бъде предмет на друга статия.

Коментари

6 коментара за Как търсачката „вижда“ уеб страниците

  1. Ванката за пт, 13th юни 2008 22:04

    Интересна и полезна статия, поне ако искаш да разбереш нещата „отвътре“. :))
    Мерси!

  2. Кирил Владимиров - NetCutter за пт, 13th юни 2008 22:12

    Изключително полезна статия. Едно голямо благодаря, въпреки че знаех всичко с изключение на точка 3 и 4.
    Поздрави и молба за още подобни :)

  3. Васил Тошков за пт, 13th юни 2008 22:16

    Радвам се, че ви е харесало, момчета. Ако ми дойде музата, ще напиша и нещо за това как търсачките и в частност Google третират изходящите връзки.

  4. Огнян за сб, 21st юни 2008 11:20

    „Подобна структура е много лесно да бъде представена в релационна база данни.“
    Лесно може да бъде представен, но се съмнявам, че search engine-ите използват класическа релационна база данни.
    Преди година си бях направил малък и глупавичък spider, който да индексира съдържанието на сайтове свързани с PHP. Тестовете минаха успешно, но когато го отвързах да „опасе“ предефиниран списък от сайтове, базата данни (MySQL) за няколко часа се напълни с 300MB. Въпреки наличието на индекси опитите дори за елементарни SELECT отнемаха 10-20 секунди. По-сложните търсия въобще не минаваха, заради time_limit-а на PHP.
    Много ми е интересно как Google са си организирали тяхната разпределена DB и как въобще успяват да връщат резултати за част от секундата.

  5. Васил Тошков за сб, 21st юни 2008 12:12

    Това разбира се е тайна, но има няколко концепции, които при всяко положение спазват.

    Базата данни може да бъде релационна, обектно-ориентирана или хибридна. От тези три типа единствено релационния модел поддържа висока скорост на заявките, така че не смятам че е друг.

    Тайната е в алгоритъма на търсене. Според мен се базира на някакви предварителни сортировки, като после чрез двоично търсене се намира желания елемент за много кратко време.

    Нещо просто стои в основата, но въпросът е да знаем какво е.

  6. Гугъл за вт, 2nd сеп 2008 16:20

    Пожелавам ти да разбереш наистина някой ден. И да споделиш след това разбирасе :)