Folosesc motoare de căutare zilnic și aveam doar o idee vagă despre cum clasează de fapt rezultatele, așa că am construit unul — peste conținutul real al acestui site — ca să aflu. Există în portofoliu ca demo-ul Motor de căutare.
Ideea centrală e un index inversat: în loc să parcurgi fiecare pagină la fiecare căutare, parcurgi fiecare pagină o singură dată, dinainte, și reții ce cuvinte apar unde. O interogare devine atunci o căutare rapidă, nu o recitire completă. Partea mai grea e clasarea — a găsi potriviri nu e suficient, trebuie să știi care potriviri contează. Aici intervine BM25: o formulă care punctează mai bine o pagină dacă un termen e rar în tot site-ul dar frecvent pe pagina respectivă, cu randamente descrescătoare, ca o pagină să nu câștige doar repetând un cuvânt.
Toleranța la greșeli de tastare a fost partea pe care am subestimat-o. O căutare care merge doar cu ortografie corectă pare stricată din prima clipă în care o folosește cineva real, așa că indexul potrivește și cuvinte apropiate — suficient de apropiate în distanța de editare ca să conteze, dar nu atât de apropiate încât cuvinte fără legătură să se confunde.
Ce mi-a rămas în minte e cât de mult din „algoritm" e de fapt „funcția de scor". Indexul e mecanic; decizia reală e în felul în care cântărești raritatea față de frecvență față de lungime. Schimbări mici în formulă remodelează vizibil ce rezultate par corecte — probabil de aceea motoarele de căutare reale tratează clasarea ca fiind produsul propriu-zis.