SEO
Straipsnis iš Vikipedijos, laisvosios enciklopedijos.
Tam buvo pradėta paieškos sistemų optimatizacija. Kiekviena paieškos sistema veikia skirtingai, straipsnyje yra aptariame labiausiai lankoma ir populiariausia paieškos sistema Google bei jos veikimo principas. Kas yra paieškos sistemos robotai, crawler ir kita.
Pagrindinės paieškos sistemų charakteristikos – paieškos apimties pilnatvė ir paieškos rezultatų relevantiškumas. Reikšmingos ir tokios charakteristikos, kaip užklausų apdorojimo greitis, sistemos atsiliepimo gavimas, atsakymo patikimumas ir papildomos paslaugos: galimybė surasi dokumentus, panašius į turimus (like this), galimybė prijungti automatinius vertėjus ir galimybė patikslinti užklausą tuoj po paieškos procedūros.
[taisyti] Paieškos apimties pilnatvė
Pirmasis paieškos apimties pilnatvės aspektas – tai informacijos “aprėpimo pilnatvė”. Kartą sukurta Interneto resursų DB yra tinklo būsenos konkrečiu momentu lipdinys. Jeigu šita bazė nuolat ir operatyviai nebus atnaujinama, joje egzistuojančios nuorodos į dokumentus taps negyvos. Be to, DB atnaujinimo operatyvumo stoka neleis vartotojui stebėti naujausių pakeitimų jį dominančioje dalykinėje srityje. Antras aspektas – „atsiliepimo pilnatvė“ – susijęs su pilnatve informacijos, pateikiamos vartotojui pagal jo užklausą.
[taisyti] Relevantiškumas ir pertinentiškumas
Relevantiškumas – tai formalus informacijos, kurią pateikia paieškos sistema, atitikimas vartotojo užklausai [29]. Jeigu pagal vartotojo užklausą gaunama N dokumentų, kurie yra dviejų dokumentų aibių junginys: atitinkančių užklausą (jų kiekis: N1) ir neatitinkančių užklausos (jų kiekis: N2), t.y. N=N1+N2.
[taisyti] Dokumentų indeksai
Dokumentų indeksai saugo informaciją apie kiekvieną dokumentą. Informacija, saugoma kiekviename įraše, nurodo esamą dokumento būklę, nuorodas į saugyklą, dokumentų duomenis ir įvairią statistiką. Jei dokumentas jau buvo peržiūrėtas, jis taip pat turi nuorodą į kintamąją tarpinę bylą, vadinamą docinfo, kuriame yra URL ir dokumento antraštė. Kitu atveju nuoroda nurodo į URLlist, kuriame saugomi tik URL. Šis sprendimas atsirado norint turėti pagrįstai kompaktišką duomenų struktūrą ir galimybę išrinkti įrašą vienu kreipimusi į diską paieškos metu. Be to, yra byla, kuri naudojama URL paversti į docID. URL sąrašas, kuris atitinka docID, išrikiuojamas pagal rezultatus. Kad rastume docID iš atskiro URL, URL rezultatinis sąrašas suskaičiuojamas ir atliekama binarinė paieška, kad būtų surastas docID. Šis paketinis metodas yra esminis, nes kitu atveju diskui reikėtų kreiptis į kiekvieną nuorodą, kuri reikalautų atskiro kreipimosi, ir tai truktų daugiau kaip mėnesį 322 milijonams nuorodų duomenų bazėje apdoroti.
[taisyti] Pataikymų sąrašas (Hit list)
Pataikymų sąrašas atitinka tam tikrų žodžių tam tikrame dokumente sąrašą, įskaitant vietą, šriftą ir raidžių registro informaciją. Google kompaktiškas kodavimas naudoja du baitus kiekvienam pataikymui. Yra du pataikymų tipai: raiškusis (fancy) ir paprastas (plain). Raiškusis įtraukia savo buvimą URL, antraštėje, inkariniame tekste (Anchor Text) ar metatege. Paprasti įtraukia visa kita. Paprastas pataikymas susideda iš kapitalizacijos bito, šrifto dydžio ir 12 bitų žodžio pozicijos dokumente (visos vietos, aukštesnės nei 4095, žymimos 4096). Šriftų dydis pristatomas naudojant tris bitus (tik 7 reikšmės iš tikrųjų naudojamos, nes 111 yra žymė, signalizuojanti raiškųjį pataikymą). Raiškusis pataikymas susideda iš kapitalizacijos bito, šrifto dydis nustatomas 7 bitais, 4 bitai – užkoduoti tipą ir 8 bitai – pozicijai
[taisyti] Pirminis indeksas (Forward Index)
Pirminis indeksas jau dalinai suindeksuotas. Jis saugomas „statinėse“ (barrels). Kiekviena statinė saugo wordID sritį. Jei dokumentas savyje turi žodžių, įeinančių į tam tikrą paketą, docID įrašomas į paketą atsižvelgiant į wordID sąrašą su pataikymų sąrašais, kurie atitinka tuos žodžius. Ši schema reikalauja šiek tiek daugiau atminties dėl docID atkartojimo; skirtumas labai nežymus ir sutaupo daug laiko galutinėje indeksavimo fazėje, kurią atlieka rūšiuotojas. Dar daugiau: užuot saugojusi tikrąjį wordID, Google saugo kiekvieną wordID, kaip susijusį su wordID minimumu, kuris įeina į paketą, kuriame wordID saugomas. Tokiu būdu galima panaudoti tik 24 bitus wordID ir nerūšiuotiems paketams, paliekant 8 bitus pataikymų sąrašų ilgiui.
[taisyti] Invertuotas indeksas (Inverted Index)
Invertuotas indeksas susideda iš tų pačių paketų, kaip ir pirminiame indekse, išskyrus tai, kad jie buvo perdirbti iš rūšiuotojo. Kiekvienam galiojančiam wordID žodynas saugo nuorodą, kuri nurodo paketą, kuriame yra wordID. Jei nurodoma į dokumentų sąrašą iš docID – kartu su jais nurodomas ir atitinkamas pataikymų sąrašas. Šis dokumentų sąrašas pristato visas to žodžio buvimo vietas visuose dokumentuose. Svarbi problema yra tai, kokia tvarka docID turėtų pasirodyti dokumentų sąraše. Viena paprasta išeitis – saugoti juos išrūšiuotus pagal docID. Tai leistų greitą skirtingų dokumentų sąrašų suliejimą sudėtinėse žodžių užklausose. Kita galimybė – saugoti juos išrūšiuotus pagal žodžio pasirodymo dokumente reitingą. Tai leidžia atsakyti į vieno žodžio užklausas ir sukuria tikimybę, kad atsakymas į sudėtines žodžių užklausas būtų pradžioje. Kaip bebūtų, suliejimas daug sudėtingesnis. Taip pat tai padaro daug sudėtingesnį ir vystymą, nes pokyčiai reitingavime reikalauja perkurti indeksą.
[taisyti] Užklausos apdorojimas
[taisyti] Index Serveriai
Index serveriai – turi invertuotą indeksą, kuris suderina kiekvieną užklausos žodį su atitinkamų dokumentų sąrašu (hit list). Toliau, sukryžiuojant žodžių sutapimų sąrašus, nustatoma relevantiškų dokumentų identifikatorių eilė, ir kiekvienam dokumentui suskaičiuojamas relevantiškumo laipsnis (svoris). Svoris nustato rezultatų išvedimo tvarką. Paieškos procesas yra labai didelės apimties: nesuspausti dokumentai ir indeksai užima keletą dešimčių terabaitų. Todėl paieška vykdoma lygiagrečiai, dalijant indeksą į „nuolaužas“ (shards), kurių kiekviena apdoroja atsitiktinai pasirinktą indekso dokumentų poaibį. Kiekvieną „nuolaužą“ aptarnauja atskiras klasteris. Jeigu klasteris neprieinamas, balansatorius perkels skaičiavimus į kitą klasterį. Užklausos atlikimo galutinės fazės įvykdymo rezultatas – tai – sutvarkytas dokumentų identifikatorių (docIDs) sąrašas.
[taisyti] Doc Serveriai
Doc Serveriai – pagal dokumentų identifikatorių (docIDs) sąrašą nustato URL, tinklapio aprašymą ir visą reikalingą rezultatų sąrašo išvedimui informaciją. Šių skaičiavimų spartinimui kreipiamasi ne į patį tinklą, o į globaliojo tinklo kopiją, paskirstytą pagal klasterius.
[taisyti] Robotas (botas) Googlebot
Šimtams milijonų Interneto puslapių reitinguoti Google turi greitai dirbančią tyrimo sistemą. Kiekvienas URLserveris pateikia URL sąrašus tam tikram „vorų„ skaičiui (Google tipiškai naudojo 3-4 vorus). Abu: ir URLserveris, ir „vorai“, yra įdiegti į Python. Kiekvienas „voras“ laiko apytiksliai 300 atvirų jungčių vienu metu. Tai būtina, norint gauti puslapius pakankamai greitai. Ribiniais greičiais sistema gali patikrinti iki 100 tinklapių per sekundę, naudodama keturis „vorus“. Tai sudaro apytiksliai 600Kb duomenų per sekundę. Pagrindinis efektyvumo kriterijus tenka DNS paieškai. Kiekvienas „voras" prižiūri savo nuosavus DNS atsargos resursus, taigi nebereikia vykdyti DNS paieškos, prieš tikrinant kiekvieną dokumentą. Kiekviena iš šimtų jungčių gali būti skirtingose būsenose: ieškoti DNS, jungtis prie tinklo, siųsti užklausas, gauti atsakymus. Voras naudoja asinchroninius Į/I (I/O) įvykiams valdyti, ir daug užklausų tinklapiui keliama iš vienos būsenos į kitą būseną lygiagrečiai. Google apeina (crawls) tinklapius dviem būdais:
- Main Crawl (crawl1) iš IP 216.239.46.xxx
- Fresh Crawl (crawl2) iš IP 64.68.82.xxx
Paprastai naują tinklapį pirmiausia aplanko voras crawl2, nors iš karto po atnaujinimo tinklapis iš pradžių gali būti aplankytas voro crawl1. Naujas tinklapis nepateks į Google pagrindinį indeksą iki tol, kol:
- jo neaplankys voras Crawl1
- jis „išgyvens“ atnaujinimą po Crawl1 apsilankymo.
Kol šitai neįvyks, bet koks tinklapio gautas reitingas greičiausiai bus laikinas. Apytiksliai naujo tinklapio gyvavimo ciklas yra toks:
Fresh Crawl → atnaujinimas → Main Crawl → atnaujinimas → pagrindinis indeksas
- Per mėnesį tarp atnaujinimų vykdomas Fresh Crawl ir voras crawl2 aplanko naują tinklapį. Naujas tinklapis vertinamas ir įterpiamas į paieškos rezultatus, net jeigu jis nebuvo įterptas į atnaujinimą ir neįdėtas į pagrindinį Google indeksą. Tinklapio pozicijos nestabilios ir labai dažnai keičiasi.
- Paskui ateina atnaujinimo laikas. Naujas tinklapis dar nepatenka į pagrindinį indeksą. Kada atnaujinimas baigiamas, tinklapis vis dar laikomas nauju tinklapiu ir Google dar nerodo visų nuorodų į jį.
- Greitai po to vykdomas Main Crawl ir tinklapį aplanko voras crawl1. Dabar tinklapiui reikia sulaukti kito atnaujinimo, kad patektų į pagrindinį indeksą. Iki tol tinklapis vis dar laikomas nauju tinklapiu.
- Po atnaujinimo puslapis patenka į pagrindinį indeksą.
- Google indeksuoja tik pirmus dokumento 101Kb.
[taisyti] Google Šokis („Google Dance“)
Google šokis – tai laiko periodas, kada Google perskaičiuoja savo reitingus, o paieškos rezultatai smarkiai kinta 3-5 dienas. Šitas globalus atnaujinimas vyksta vidutiniškai kas 36 dienos (10 kartų per metus). Kadangi Google, kaip ir bet kuri kita paieškos sistema, priklauso nuo vartotojų ir turi dirbti 24 valandas per parą, septynias dienas per savaitę, tai atnaujinimas tampa rimta problema. Google serveriai negali būti sustabdyti techniniam aptarnavimui ir negali būti išjungti iš tinklo net ir minutei.
[taisyti] Ryšys tarp paieškos sistemų
Be Google, pasaulyje egzistuoja daug paieškos sistemų, tarp kurių yra apie 16 stambiausių (Yahoo!, AltaVista, AOL, Excite, FindWhat, LookSmart, Lycos, MSN, DMOZ, Overture, iWon ir t.t). Visos jos susijusios tarpusavyje apsikeitimų paieškos rezultatais pagrindu Kai kurios turi bendrą savininką ir suprojektuotos dirbti palaikydamos viena kitą. Detaliau sistemų ryšį galima panagrinėti 11 pav. Jame pateiktos tų 16 stambiausių sistemų bei skirtingo pobūdžio ryšiai tarp jų . Pirminiai rezultatai ateina iš paieškos sistemos savos duomenų bazės. Antriniai rezultatai, kuriuos pateikia sistemos, – tai rezultatai iš sistemų-partnerių
[taisyti] Puslapio reitingas PageRank
PageRank tipo algoritmai, naudojantys citavimo indekso skaičiavimo algoritmus, paplito po to, kai 1996 m. Stendfordo universiteto studentai Sergejus Brinas (Sergey Brin) ir Lari Peidžas (Larry Page) pirmieji pritaikė šio tipo algoritmą savo moksliniame projekte “Goolge”. Google PR algoritmas, skirtingai nuo paprasto citavimo indekso, nelaiko visų nuorodų lygiomis ir skaičiuoja jų svorius [2]. Google teigia, kad PageRank algoritmas susideda iš 500 milijonų kintamųjų ir 2 milijardų sąlygų [8]. Puslapių reitingas gali būti laikomas atsitiktinio vartotojo („random surfer“) elgsenos modeliu. Tarsime, kad yra „atsitiktinis vartotojas“, kuris atsitiktinai naršo po atsitiktinį puslapį, tiesiog spaudo nuorodas ir niekad nepaspaudžia „atgal“, tačiau jam atsibosta, ir jis pradeda naršyti po kitą atsitiktinį puslapį. Tokios elgsenos modelis – pirmos eilės Markovo grandinė („first-order Markov Chain“). Joje tikimybė, kad „atsitiktinis klaidžiotojas" aplankys puslapį, ir yra Puslapio Reitingas (PR). Iškrovimo faktorius (dumping factor) d yra tikimybė, kad kiekvienas puslapis nusibos „atsitiktiniam vartotojui“ ir jis paprašys kito atsitiktinio puslapio, paspaudęs nuorodą, arba grįš į puslapį, iš kurio atėjo, su tikimybe (1-d) “normalizacijos konstanta“ [15]. Konstanta reikalinga, jei puslapyje nėra išeinančių nuorodų (outlinks) [14] Puslapis gali turėti aukštą Puslapio Reitingą, jei yra daug puslapių, kurie veda į jį, arba jei yra keletas puslapių, kurie nurodo į jį ir turi aukštą Puslapio Reitingą. Akivaizdu, kad puslapiai, kurie turi daug nuorodų iš daugelio vietų visame Internete, yra verti peržiūrėti. Taip pat puslapiai, kurie tikriausiai turi vieną nuorodą iš globalių portalų (pvz. Yahoo!), taip pat verti peržiūrėti. Jei puslapis būtų nelabai kokybiškas, nelabai tikėtina, kad Yahoo svetainė turėtų nuorodą į šį puslapį. PR prižiūri abu šiuos atvejus ir viską, kas susiję, rekursiškai matuodamas svorius tarp Interneto nuorodų struktūros.
[taisyti] Veidrodiniai tinklapiai (Mirror websites)
Tai keletas skirtingų URL adresų, kurie nukreipti į tą patį tinklapį. Veidrodžių panaudojimo paieškos sistemos netoleruoja ir filtruoja juos iš indekso, palikdamos tik pagrindinį tinklapį. Išeitis iš tokios padėties yra. Tai tinklapio keitimas priklausomai nuo URL, tačiau vizualiai lankytojai gali to nematyti. Pakeitimai atliekami vidinių nuorodų sistemoje, nuorodų tekste, raktiniuose žodžiuose, žodžiuose metateguose ir <title> tege bei paties teksto struktūroje. Galimi ir minimalūs pakeitimai dizaine. Tokiu būdu robotas, ateidamas į veidrodinį tinklapį, laikys jį atskiru tinklapiu, kuris turi teisę dalyvauti reitinge.
[taisyti] Failas „robots.txt“
Failas „robots.txt“ skirtas nurodyti paieškos robotams, kokie tinklapio puslapiai ar katalogai negali būti indeksuojami. Liujiso Monje (Louis Monier iš Altavista) nuomone, tik 5% visų tinklapių šiuo metu turi netuščią „robots.txt“ failą. Tačiau failas „robots.txt“ – tai pirmas dalykas, į kurį atsižvelgia voras, indeksuodamas tinklapį. Todėl svarbu turėti net tuščią failą. Yra nuomonių, kad šis failas įtakoja indeksaciją (tuščias failas reiškia, kad tinklapis neturi ko slėpti – o tai pagal SEO ekspertų prielaidas gali teigiamai įtakoti tinklapių vertinimą) [17]. Failas „robots.txt“ naudoja tokią sintaksę:
- User-agent: {SpiderName}
- Disallow: {Filename}