Am scris asta pentru o blogul pe care îl aveam înapoi când …. nu mai este pe web așa că .. iată-l! :
Cum se scrie un motor de căutare
Darren Rowse pe probolgger.net organizează un proiect de scriere de grup despre orice „Cum să”. Acesta este unul dintre puținele bloguri pe care le citesc în mod regulat, așa că îmi dau seama de ce să nu scriu ceva care merită citit pentru o schimbare, mai degrabă răbdarea mea violentă standard în care voi ajunge să ameninț că îl voi înjunghia pe Hugo Chaves în gât.
Am decis să scriu „Cum se scrie un motor de căutare”. Am ales acest subiect din două motive:
- Nu există prea multe informații bune pe acest aspect pe web.
- În prezent scriu unul pentru unul dintre clienții mei.
Clientul meu este un comerciant cu amănuntul online de dimensiuni semnificative, așa că nu caut în întregul web doar site-ul lor, mai exact produse de vânzare pe site-ul lor. Cu toate acestea, aceleași tehnici pot fi folosite pentru a scrie mai complexe folosite pentru căutarea pe internet. Știu că acest lucru nu este un blog tehnologic, așa că nu voi intra prea în profunzime din punct de vedere tehnic și nici nu voi discuta despre cerințele de hardware și de putere de procesare sau despre accesarea cu crawlere pe web.
Folosesc o tehnică destul de simplă , Am tabel (tblKeywords) cu trei câmpuri:
- Itemid (Dacă efectuați o căutare pe web, acesta ar fi URL)
- KeyWord (Indexed Keyword)
- Greutate (aceasta este valoarea numerică de la 1 la 100 cu cât este mai mare acest număr, cu atât este mai semnificativ (greutatea) cuvântului cheie) * PK = ItemID + KeyWord
Primul lucru pe care îl fac este să adun cuvinte individuale din orice loc care sunt relevante. Pentru clientul meu voi trage cuvintele din tabelul produselor. Mai exact din câmpurile Itemid, ItemName, ItemShortDescription, ItemLongDescription, Producător, ProducătorSKU, Categorie1, Categorie2, Categorie3 ect. Dacă indexați pagini web, puteți extrage date din textul paginii, titlul paginii, adresa URL sau link-urile din alte pagini care se leagă înapoi la pagina indexată.
Valoarea ponderală este determinată de unde provine cuvântul cheie . De exemplu, în cazul meu, SKU-ul articolului „Fabricare” ar avea o greutate de 100, în timp ce un cuvânt din numele articolului poate avea o greutate de 25. Un cuvânt din ItemLongDescription poate avea o greutate de 5. Dacă indexați paginile web, cuvintele din titlul paginii pot avea o greutate de 75, în timp ce un cuvânt cu caractere aldine din textul paginii poate avea greutatea de 10. Dacă un cuvânt se repetă în mai multe ori sau \ și în mai multe locuri, ați adăuga greutate pentru fiecare dată când apare. De exemplu, dacă cuvântul „Cămașă” provine din două locuri pentru ItemId = 12345, ItemName (greutatea de 25) și apare de două ori în ItemLongDescription (Greutatea de 5 x2 = 10) cuvântul „cămașă” ar avea greutatea totală de 35 pentru ItemId = 12345.
Dacă cineva caută „cămașă roz”, caut în tabelul meu toate instanțele cuvintelor „Roz” sau „Cămașă” și Total greutăți. Se afișează elementele cu cea mai mare greutate totală în partea de sus.
SQL:
Select Itemid, sum(weight) as totWeight from tblKeywords group by itemId having keyword in ("pink","shirt")
Deci, aici îl aveți, un element de bază (și rapid) motor de căutare. Desigur, mai sunt multe de făcut, cum ar fi eliminarea punctuației, cod HTML și cuvinte cheie inutile precum „și”, „dacă”, „sau”. Acest lucru nu se adresează căutării frazelor cheie, dar puteți folosi un sistem similar pentru fraze dacă vă dați seama de unde încep și se termină.
Comentarii