Po přečtení zápisku od HejTi jsem si vzpoměl na inzerované přednášky Seznamu. Už je ponich :(( Ale aspoň jsem stihl tu co mě nejvíce zajímá, běžela na FELu. Další na VUT a MU.
Tak tady je několik doplňujících poznámek k již uvedeným, které jsem si vypujčil, abych je nemusel přepisovat (většina z toho jsou čistě opsané slajdy z přednášky, tak už sem to nemusel opisovat znovu). Přednáška na FEL se aspoň podle zápisků lišila, minimálně tam nebyla ta část o tvorbě www a administrační rozhraní. Jako bonus tam byl i Yuhůů (v sáčku :), nicméně buď z něho byl přednášející dost nervózní, nebo je nervózní pořád. V každém případě stále koukal na Yuhůa a Yuhů po každé větě přikyvoval (přikyvoval ikdyž se přednášející na něj neotáčel :). Běžný text jsou přebrané zápisky (jen některé ke kterým jsem měl další poznámky) občas doplňené komentáři od Yuhůa, modře pak moje další poznámky.
Robot "normalizuje URL" (bez či s www, encodované znaky, URL se rozbije na části, ignorují se různé části - např. www, PHPSESSID, rand). Výsledkem je MD5 hash.
Na začátku se preventivně odstraní triviální duplicity (www.neco.cz neco.cz). Seřadí se paremetry v URL podle abecedy (by se url nelišila jen pořadím).
Pokud najde url, tak se ho pokusí stáhnout a když se mu to napoprvé nepovede, jde do banlistu, ze kterého automaticky vypadne za 3 měsíce.
Stránka se při reindexaci má 3x3 pokusy (pokud se nezdaří, je vyřazena z vyhledávání (pokud server nevyhodil 50X chybu), při úspěšném pokusu opět vložena).
Při vyřazení z hledací databáze se ztratí zpětné odkazy (které se obnovují cca měsíc).
Tak doplnění: rozlišuje se pokud se stránka indexuje poprvé. Pokud se na první pokus nepodaří stáhnout, jde na banlist. Banlist tu zřejmě neznamená BAN, ale seznam adres, který se nemá znovu zkoušet indexovat. Kdyby tento seznam nebyl, robot by se stránku snažil indexovat každou chvíli znovu. Jde především o adresy s překlepy a jiné špatné nebo vůbec neexistující stránky, které jsou na netu stále. Odtud tedy vypadne až za tři měsíce.
Pokud stránka již indexována je, jen se reindexuje: zkouší se stáhnout 3x3, to je když nejde stáhnout, robot to zkusí za 10 minut a pak ještě jednou. To opakuje třikrát po dnu. Pokud se při některém z pokusů nepodaří je hned vyřazena z výsledků hledání (aby neměly špatné výsledky). Nicméně pokud druhý den už je stránka ok, opět se do hledání vrátí a je indexována. Co se stane pokud se to nepovede ani napotřetí neříkal, ale asi jde na ten banlist.
Info o zpětných odkazech je obsaženo v indexu u dané stránky, takže při výpadku zmizí a při doindexování ale už není odkud ho vzít. Nejdřív se musí počkat až se reindexují všechny stránky kde ty odkazy byly, pak se vrátí (cca 1 měsíc).
Stránka obsahující velké množství nefunkčních odkazů není nijak postihována (zatím prý).
robots.txt se stahuje pravidelně za 2-8 dní, nemá vliv na již zaindexované stránky
Yuhů: má, akorát ne okamžitý. Proti robots.txt se stránky vyhodnocují při reindexaci.
Ze slajdu: "Pravidla se neaplikují okamžitě na všechna URL v databázi". Stránka se sice znovu již nestahuje, ale z výsledků hledání vypadne teprve až při další reindexaci.
stránky s vyšším rankem mají větší pravděpodobnost, že se dostanou do databáze (při přidávání se porovnává s náhodným číslem, když je náhodné číslo menší, stránka se přidá, jinak se zahodí)
Důvodem je velké množství nekvalitních stránek, které zanášejí databázi. Odkazy ze stránky s vyšším rankem tak mají mnohem větší šanci na idnexaci než na stránce s nulovým rankem.
if (( rand() % 256) < rank(odkazujici))
accept url
else ignore url
Pokud přidáte stránku přes formulář na seznamu, stránka se přidá okamžitě (na slajdu: způsobí prioritní idexaci a neuplatňuje se tam ten výpadek). Je zde ale nějaký limit v počtu na doménu (situ, jak poznamenal Yuhů). Formulář slouží to i k změně screeeshotu webu, pokud to potřebujete. Reindexace webu tady trvá cca do 4 hodin. Adresa je přidána do seznamu k reindexaci (nelze ji tam dát vícekrát, tedy jako můžete ale budete tam jen jednou). Robot ji do několika minut (prý do 5) navštíví a stáhne a udělá screenshot. Bohužel ale všechny tyto data si robot ukládá do paměti. Když dojde k naplnění paměti, jsou teprve tyto data uložena na disk (myšleno asi nahrána do db). pak se to projeví teprve navenek. To trvá asi 4 hodiny. Pokud se trefíte do okamžiku kdy je paměť už plná, máte štěstí a může to být hned.
Uchovává se posledních N (10?) změn a zaznamenává se, jestli se stránka změnila, nebo ne. Podle toho se určuje perioda stahování (podle ranku jsou max. a min. hodnoty).
Perioda se uchovává pro každou stránku zvlášť. Pokud nedošlo ke změně, perioda další reindexace se prodlužuje, nebo naopak snižuje. Prodloužení/zkrácení periody záleží na ranku stránky, stejně tak min a max těchto dob. Prý stránka s vysokým rankem s neměnícím se obsahem stejně bude indexována třeba každé tři dny. Celé je to násobenou ještě nějakou konstantou (říkal Yuhů), která reguluje celkovou rychlost indexace.
Po stáhnutí stránky se aplikují filtry (content-type - nevyhovující na banlist, binární data - nevyhovující na banlist, detekce jazyka - akceptuji pouze české, meta tag robots - noindex, nofollow)
Binární data - zjišťuje jestli je to třeba zip, gif atd. Ty pak zahazuje (zase nějaký banlist). Seznam neumí .doc a .pdf, ale zvládne .txt. Tyto data zjišťuje sám, info co mu posílají servery nevěří. Info posílané servrem se dá přebýt metatagem CONTENT ve stránce. Seznam procházi většinu běžných domén, jazyk určuje pak sám. Detekce jazyka - kombinace frekvenčního slovníků a frekvenční analýzou znaků na stránce (hm, snad sem to napsal dobře, ale mně to stejně nic neříká :o)).
Parser vyhazuje duplicity - přes MD5 celé stránky (zůstává první)
Yuhů: nemusí zůstat ta první. Je tam nějaké zkušební období, kdy se dá nové duplicitě šance nabrat body a původní URL předběhnout (to pak vypadne).
Podle přednášejícího se projevují i malé změny na stránce.
Stránka má průměrně 4kB dat v indexu. Přeindexovat celou db by prý zvládli za 5-6 dní, kvalitně pak za 14 dní.
V indexeru je zpracován textový derivát (lemmatizace, doplňování diakritiky, vytváří index v paměti) a připraví data pro dynamické úryvky ve výsledku
Lemmatizace = hledání základního tvaru slova. Doplnění diakritiky probíhá jen pokud je celý odstavec s diakritikou, jinak ne a je to bráno za úmysl.
cca do 250milis projde 40GB dat a zobrazí výsledek (cca 200dotazů za vteřinu)
V db je cca 30M dokumentů, průměrně má jeden 200 slov a jedno slovo průměrně 7 znaků.
Zpracování dotazu - rozloží na slova, pročistí (neznámé znaky), lemmatizace a doplnění diakritiky, výběr lemmatu ("TV nova" v. "nová TV"; stát - sloveso, podst. jm.; "Byt v Praze" v. "Být v Praze")
U dotazu se doplnění diakritiky dělá vždycky. Pak to vráti kombinaci všech možných lemmat, které dotazu vyhovují. Ta se nějak ohodnotí a výsledek vrátí vzhledem jen k tomuto jednomu nejlépe hodnocenému lemmatu (nebude tedy ve výsledku více možností).
Při výběru lemmat se kontext neuplatňuje, nezvládá také odvozené druhy slov (kuře - kuřecí). Ale vyhází třeba některá málo pravděpodobná lemmata (divné tvary sloves a podobně).
Při dotazu se porovnávají shody lemmat, pokud se rovnají i tvary, je to jen malé plus. Tématická shoda se teď uplatňuje jinak než na úrovni lemmat (myslím že to bylo myšleno že takhle nato nemají tak se to aspoň snaží nějak nahradit nečím jednoduším).
při řazení se odstraňují podobné stránky a méně relevantní stránky ze stejného webu
podobná stránka se určí na základě charakteristických řetězců slov - N náhodně zvolených řetězců o M slovech. Podobná, když asi 8 z 10 řetezců je shodných.
Z výsledku se vyřazují: 1) stránky ze stejné sity (vždy se zobrazí jen jedna, ta nejlepší) 2) podobné stránky, opět jen jedna. Podobné stránky nejsou duplicity, mají jen podbný obsah jako jiné stránky. Řetězce nejsou náhodně zvoleny, prý pseudonáhodně.
Seznam.cz s přednáškou pokračuje dál, takže na již zmíněném blogu si můžete přečíst o další přednášce.
Jinak se stavte také podívat na moje postřehy ze školení optimalizace pro vyhledávače od Dobrého webu.