Programe de căutare
de informații pe Internet

Scurt istoric

Rețeaua Internet pe care o cunoaștem aztăzi s-a schimbat destul de mult de-a lungul anilor, fiind rezultatul unui proces schimbare și extindere de circa 30 de ani. Marile universități americane au avut un rol important în dezvoltarea acestei rețele, în colaborare cu DoD (Department of Defense - Departamentul de Apărare al SUA). După ce rețeaua a trecut în domeniul universitar, a fost folosit mai ales pentru colaborarea între universități, profesori și studenți, în special pentru schimbul rapid de informații. Cu timpul, foarte multe rețele regionale universitare și comerciale și a multor organizații s-au conectat la această rețea, iar rezultatul este Internetul din prezent. Și în zilele noastre, pricipalele două aplicații ale Internetului sunt comunicația rapidă și sigură între persoane aflate la distanțe mari, răspîndite pe glob, precum și publicarea de informații.

În ultimii ani, Internetul s-a răspîndit foarte mult, în special din cauza posibilității de a publica și oferi informații, prin metode simple, unui număr foarte mare de utilizatori. De-a lungul timpului, au apărut o mulțime de unelte de publicare de informații pe Internet. Primele dintre ele, cele care au dominat pînă în 1992, au fost FTP și NetNews. În jurul anului 1992, Gopher și WAIS (Wide Area Information Service) au devenit populare pentru că au simplificat interacțiunea în rețea și au oferit metode mai bune de navigare prin informații. Gopher este utilizat și azi dar de un număr mai mic de persoane. Este bazat pe meniuri, utilizatorul putînd selecta dintr-un meniu ce anume îl interesează, iar rezultatul acestei selecții va fi un alt meniu sau o anumită resursă. WAIS are o interfață grafică intuitivă și este o colecție mare de informații indexate, oferind un mod de navigare în date destul de bun. De asemenea, dispune de un sistem performant de căutare a acestor informații. În anul 1993, cîțiva cercetători de la un centru de cercetare în fizică din Elveția (CERN) au inventat o nouă unealtă pentru publicarea pe Internet a infomațiilor: World Wide Web, respectiv protocolul HTTP (HyperText Transfer Protocol). Cu apariția primului browser grafic - Mosaic - în același an, publicarea informațiilor pe World Wide Web a cunoscut o creștere și o răspîndire uluitoare. Din acest moment, s-a produs o explozie de informații, iar utilizarea Internetului a cunoscut o rapidă răspîndire, numărul calculatoarelor conectate la Internet crescănd exponențial. Acest lucru se datorează atractivei interfețe grafice a browserelor, binecunoscute ca Netscape sau Internet Explorer, și a ușurinței de a folosi aceste unelte, fiind posibilă accesarea datelor multimedia, de diverse formate, prin intermediul legăturilor WWW. Explozia continuă și azi, numărul utilizatorilor Internetului crește într-un ritm amețitor și se așteaptă ca această creștere să continue și în următorii ani.

Din moment ce publicarea de informații pe Internet a devenit ușoară, populară și ieftină, utilizarea în mod efectiv a informațiilor accesibile a devenit tot mai greoaie. Volumul informațiilor continuând să crească rapid, a devenit tot mai greu găsirea infomațiilor relevante. Mai mult, sistemele de informații actuale - serverele Web - se confruntă cu o supraîncărcare și avem de-a face cu gîtuiri și blocaje pe rețea, din cauza numărului tot mai mare de utilizatori care încearcă să acceseze informații disponibile pe Internet.

Rețeaua Internet și World Wide Web -ul sunt rețele descentralizate, dinamice și foarte diverse. Navigarea pe WWW este dificilă, iar găsirea de informații poate fi o adevărată provocare. Unul dintre motive este creșterea rapidă a volumului datelor, a numărului utilizatorilor și marea diversitate a datelor, ceea ce duce la folosirea efectivă a informației din ce în ce mai dificilă. Un alt motiv este că utilizatorii Web-ului, de obicei, navighează pentru a găsi informații urmărind legături hipertext. Cu continua creștere a Web-ului, utilizatorii sunt nevoiți să parcurgă tot mai multe legături ca să găsească ceea ce caută. Astfel traversarea individuală pentru a găsi informații devine o soluție care nu este deloc practică. De aceea, utilizatorii au ajuns să depindă de programe de căutare sau căutătoare (search-engines), care îi ajută în căutarea informațiilor disponibile prin Internet.

Ce este un program de căutare?

Din cauza dificultății (sau a imposibilității?) de a păstra un imens spațiu de informații organizate, a nevoii de mult lucru pentru traversarea de sisteme informaționale mari și din cauza naturii subiective a organizării acestor informații, majoritatea programelor de căutare - sau sisteme de descoperire a resurselor - creează o bază de date, un index al infomațiilor accesibile pe rețea. Cînd utilizatorii apelează la aceste programe de căutare, pentru a-i ajuta în găsirea de informații, are loc, de fapt, o căutare în această bază de date.

Multe dintre uneltele de căutare și indexare fac parte din una din următoarele categorii:
• programe care generează indexuri de nume de fișiere sau nume de meniuri ale informațiilor larg răspîndite, de exemplu Archie sau Veronica;
• programe de căutare care generează indexuri complete pentru tot conținutul fișierelor, de exemplu Lycos sau WebCrawler.

Indexurile de nume sunt foarte eficiente din punct de vedere al spațiului pe care îl ocupă, dar ele suportă doar cereri limitate, în multe cazuri negăsind rezultate. E posibil ca să creăm cereri de căutare și să avem rezultate, doar dacă există fișiere ale căror nume conține subșirul respectiv. Indexurile globale pe conținutul fișierelor devin mai puțin utile cu creșterea volumului informațiilor, ele ocupînd foarte mult spațiu și cauzează ca, la multe cereri, să se găsească ca rezultat prea multe informații, din care foarte puține sunt de fapt utile utilizatorului.

Unele programe de căutare, ca de exemplu AliWeb, colectează indexuri locale care descriu ce informații se găsesc pe un anumit server. Această abordare necesită ca administratorii să creeze aceste fișiere, și să introducă într-un format special datele cerute, pe care să le stocheze pe servere. Mulți administratori de servere, însă, nu au fost de acord să facă acest efort suplimentar.

Putem spune deci că majoritatea programelor performante de căutare de azi generează indexuri enorme, pentru întregul conținut al documentelor (full-content indexing). Aceste programe de căutare folosesc roboți Web, pentru a transfera pe sistemul de fișiere local informațiile, documentele care trebuie indexate. Acești roboți sunt programe software care încearcă să localizeze și transferă un număr mare de documente WWW, traversînd în mod recursiv legături hipertext, pornind de la un set de documente cunoscute. Aceste programe nu necesită luări de decizii centralizate și nici participarea a unor webmaster-i individuali, fiind nevoie doar ca ele să fie compatibile cu standardele care guvernează și fac Web-ul să funcționeze. Programele de căutare de acest gen tind să genereze baze de date mai complete decît cele care se bazează pe efortul voluntar de colaborare a webmaster-ilor.

Probleme

Programele de căutare și indexare actuale ne oferă un serviciu extrem de util: localizarea informațiilor dorite, pe baza unor cereri create de utilizator. Aceste programe care ne ajută atît de mult însă, nu sunt perfecte, ele au anumite deficiențe.

Înainte de a prezenta aceste deficiențe, trebuie să prezentăm cum funcționează serverele Web. Aceste servere trebuie să trateze simultan un număr mare de cereri. Un server popular pe Internet recepționează cîteodată sute sau chiar mii de cereri pe secundă, la care trebuie să răspundă în timp util. Acest lucru poate duce la o supraîncărcare a serverelor.

Prima dintre deficiențele programelor clasice de căutare este deci supraîncărcarea serverelor. Acest lucru are loc cînd un astfel de program trebuie să indexeze informația de pe un server, și ca să facă acest lucru el pornește un robot. Robotul transferă recursiv toate fișierele aflate pe acel server. Robotul fiind un program care se execută pe un calculator, el poate prelucra și transfera aceste fișiere rapid, cu o viteză uimitoare, care nu se compară cu viteza cu care lucrează un utilizator uman. Acest lucru poate duce la supraîncărcarea serverului, iar dacă robotul este un program cu fire multiple care se execută în paralel, cererile HTTP către serverul web indexat pot crește exponențial.

Al doilea dezavantaj al programelor de căutare provine din faptul că acest robot trebuie să transfere informații de la toate serverele pe care programul de căutare le indexează, ceea ce, pe lîngă încărcarea serverelor, duce și la un trafic intens pe rețea și poate cauza blocaje. Acest lucru poate duce la întârzieri pentru utilizatorii care vizitează serverele indexate. Aceste deficiențe sunt dublate de faptul că programele de căutare - care sunt destul de multe - adună informații, dublate de faptul că programele de căutare-dinare a efortului între ele.

O altă deficiență este mărimea enormă a indexului, a bazei de date care ocupă foarte mult spațiu. Fiind vorba despre indexare totală a conținutului fișierelor, aproape fiecare cuvînt dintr-un fișier este indexat și stocat în baza de date. În unele cazuri, mărimea indexului poate fi mai mare decît informațiile indexate. Cu creșterea volumului datelor - procesul de indexare fiind o operațiune lentă - timpul necesar indexării crește și el. Acest timp însă, nu are voie să depășească o limită, iar, ca să rămînă sub această limită, este nevoie de noi resurse, pentru ca sistemul să rămînă performant. Pe partea pozitivă, indexurile o dată construite, formatul lor special permite o căutare foarte rapidă.

O altă probleme apare din două motive: din natura dinamică a Internetului și din modul de funcționare a programelor de căutare. Majoritatea programelor de căutare vizitează periodic serverele pe care trebuie să le indexeze. Din motive de performanțe și pentru evitarea încărcării serverelor, perioadele acestea durează cel puțin o lună. Internetul fiind foarte dinamic, cu multe informații care se schimbă foarte des, de multe ori, sunt generate anumite rezultate care conțin legături incorecte la documente care nu mai există, informația respectivă nemaifiind disponibilă. Acest lucru poate fi destul de supărător pentru utilizatorii care caută informații.

Arhitectura unui program de căutare clasic

În general, un program de căutare clasic este constituit din mai multe module: nucleul de căutare, robotul de transfer, baza de date și serverul de cereri. În continuare, vor fi prezentate separat aceste componente.

1. Nucleul de căutare
Această componentă a programului de căutare coordonează toate activitățile și este responsabilă cu luarea deciziilor de genul care document va fi explorat în continuare și inițiază transferul documentului prin trimiterea unor instrucțiuni robotului care efectuează transferul. De asemenea, de obicei, are o bază de date a serverelor care trebuie indexate. Administratorul unui server web care dorește ca un program de căutare să indexeze serverul administrat de el - și la următoarele căutări să genereze rezultate și de pe serverul respectiv - se conectează de obicei, la programul de căutare respectiv și completează un formular HTML, în care descrie conținutul serverului adminstrat de el. Astfel, el ajunge în baza de date a serverelor care trebuie vizitate și indexate a programului de căutare. Nucleul de căutare vizitează fiecare server de pe listă periodic - nu mai des de o dată pe lună, pentru a nu genera trafic excesiv - și transferă recursiv toate documentele de pe servere, pe care apoi le indexează.

2. Robotul de transfer
Acest program este responsabil cu transferul documentelelor de pe rețea, de la serverele Web, la comanda nucleului de căutare. Ca să funcționeze corect, roboții trebuie să respecte anumite reguli, care țin de anumite probleme etice de bun simț de pe rețeaua Internet. În primul rînd, trebuie să se identifice, și să identifice proprietarul lor, pentru ca, în cazul unor probleme cu un server Web, probleme cauzate eventual de robot, administratorii sistemului să știe pe cine să contacteze. O altă problemă ar fi evitarea supraîncărcării serverelor Web. Un robot fiind un program care rulează pe un calculator, poate transfera fișiere cu o viteză uluitoare. Dacă este un program multi-threaded, numărul fișierelor prelucrate pe minut poate fi foarte mare. Dacă un asemenea robot se năpustește pe un server, în mod sigur, va cauza creșterea încărcării acestuia. O soluție la această problemă este ca robotul să țină o pauză - 30 de secunde este satisfăcător din punctul de vedere al serverului - între transferul consecutiv al documentelor de pe același server. De asemenea, ar fi bine ca robotul să se limiteze doar la fișierele de care chiar are nevoie. Un robot care transferă fișiere pentru a fi indexate nu are ce să facă cu fișiere grafice, de exemplu. O altă soluție pentru evitarea încărcării serverelor ar fi ca roboții să ruleze și să facă transferul la momente oportune, cînd serverele sunt mai libere. Dacă nu ar face așa și ar transfera fișierele cînd e îmbulzeală, cînd mulți utilizatori umani vizitează același server, aceștia din urmă ar înregistra întîrzieri semnificative. Este, de asemenea, de preferat ca un robot să nu viziteze prea des același server. O altă regulă este ca roboții să încerce să reducă din trafic și încărcarea serverului, prin tactica de a nu ataca un singur server dintr-o dată, ci să transfere documente de pe mai multe servere, simultan. De asemenea, ar fi corect din partea unui robot ca să avertizeze administratorul serverului pe care urmează să-l viziteze despre intențiile lui. Astfel, dacă apar anumite probleme cu serverul, acesta din urmă să știe la cine să apeleze. Administratorul serverului ar putea da sfaturi cînd este serverul mai liber, cînd este momentul oportun pentru transferul fișierelor care vor fi indexate.

În anumite cazuri, un administrator de server dorește să controleze accesul roboților la anumite fișiere, pe care nu le vrea indexate de un program de căutare. Pentru realizarea acestui lucru, s-a elaborat un standard prezentat în caseta Standard pentru Excluderea Roboților.

3. Baza de date
Acestă componentă este responsabilă cu stocarea persistentă a datelor - de fapt a meta-datelor - unui document. Documentele transferate sunt indexate și rezultatele indexării sunt stocate. De asemenea, anumite programe de căutare stochează și legăturile dintre documente. De obicei, modul de indexare se bazează pe un algoritm de asociere, dând fiecărui cuvînt cheie o valoare de pondere. Fiind vorba de o indexare totală, pe tot conținutul documentului, aproape fiecare cuvînt din document este considerat un cuvînt cheie. Exceptate de la această regulă sunt cuvintele care sunt pe o listă a cuvintelor care nu pot fi cuvinte cheie. Acestea pot fi prepozițiile, conjuncțiile etc. De asemenea, unele programe de căutare nu consideră cuvinte cheie acele cuvinte al căror număr de apariție într-un document depășește o limită maximă. Modul de asociere a ponderii cuvintelor cheie are anumite reguli, care pot diferi de la un program la altul. Unele programe de căutare pur și simplu asociază o pondere în funcție de numărul de apariții a cuvintelor cheie din fișierele respective. Alte programe asociază o pondere mai mare acelor cuvinte, care apar în anumite zone mai importante ale documentului, în interiorul unor anumite tag-uri HTML, ca de exemplu titlul, care este în tag-ul <TITLE> , subtitluri, în tagurile <H1>…<H6>, cuvinte care apar în interiorul tagului META, la atributul „keywords“, la începutul documentelor sau alte zone evidențiate în text. Unele programe mai iau în considerare proporția dintre cuvinte cheie găsite și numărul total al cuvintelor în document. În baza de date astfel creată, vor fi executate căutări la cererea unor utilizatori, iar documentele rezultate în urma unei căutări vor fi listate în ordinea descrescătoare a ponderilor.

4. Serverul de cereri
Acest modul implementează serviciul de cereri disponibil de pe Internet în forma unui formular HTML. În figura „Formular de creare de cerere de căutare“ este prezentat un asemenea formular.

Aceasta este o interfață puternică care permite formularea de cereri complexe. Din datele și parametrii introduși de un utilizator oarecare, se generează o cerere către baza de date. Utilizatorii introduc un set de cuvinte cheie și specifică modul în care aceste cuvinte cheie se leagă între ele. Rezultatele, care sunt documentele relevante găsite pentru cererea respectivă, sunt prezentate sortate, în ordinea relevanței lor. Despre modul în care o cerere este creată de către un utilizator și despre funcțiile pe care o unealtă de căutare le poate oferi, puteți citi în caseta „Metode de căutare“.

Prezentarea rezultatelor unei căutări în context

În multe cazuri, cînd utilizatorii caută informații, adesea, ei au în minte doar niște detalii vagi, fragmentate, despre ce anume caută. În asemenea situații, dacă le oferim doar titlurile unor documente ca rezultate, nu este îndeajuns ca ei să facă o alegere bună.

Arătîndu-le descrieri de context din fișierele găsite, de obicei, putem reduce numărul încercărilor greșite pe care utilizatorii le fac cînd aleg din lista cu rezultatele căutării. Afișarea unei descrieri destul de mari ca utilizatorul să aleagă bine din prima încercare este un lucru important. Unele programe de căutare permit utilizatorului să aleagă el mărimea descrierii pe care o dorește, în același fel cum setează alte opțiuni ale căutării.

Multe programe de căutare prezintă ca descriere a unui anumit document primele linii sau propoziții din respectivul document. Descrierile luate din textul care înconjoară cuvintele cheie căutate sunt adesea mult mai folositoare decît descrierile luate din primele linii ale fișierului. Din păcate, puține programe de căutare generează descrieri specifice cuvintelor cheie.

În continuare, vom dicuta cîteva aspecte legate de performanțele programelor de căutare.

Performanțele programelor de căutare

Capacitatea programelor de căutare de a găsi informații utile se măsoară, de obicei, cu ajutorul a doi factori: capacitatea de regăsire (recall) și precizia. Capacitatea de regăsire este proporția documentelor relevante găsite și măsoară ce fracțiune a documentelor relevante sunt găsite. Este, de fapt, numărul de documente relevante găsite, împărțit la numărul total al documentelor relevante existente în baza de date.

Precizia ne spune cît de bine corespund documentele găsite cu cererea recepționată. Este definită de proporția documentelor găsite - adică numărul documentelor relevante găsite, împărțit la numărul total de documente găsite - care chiar sunt relevante.

Scopul unei căutări bune este maximizarea capacității de regăsire a documentelor relevante și a preciziei. Adică, cît mai multe din documentele folositoare să fie găsite și, în același timp, cît mai multe din documentele irelevante să fie respinse.

Programele de căutare clasice au o capacitate de regăsire adecvată, care este destul de mare. Nu găsirea de destul material relevant este problema. Problema apare cu precizia, care este destul de mică, pentru că programele dau multe rezultate pozitive false, multe rezultate nu conțin ceea ce utilizatorul caută. O soluție practică este asocierea unor ponderi de relevență la rezultatele găsite, astfel, utilizatorul se poate concentra pe documentele considerate mai relevante, dar nu se elimină complet cele mai puțin relevante.

Concluzie

Programele de căutare sunt folosite, zilnic, de milioane de persoane care încearcă să localizeze în spațiul imens al Web-ului anumite informații. În unele cazuri, ei găsesc ceea ce caută, în multe cazuri însă nu, și rezultatele căutărilor nu conțin informațiile dorite. Acest lucru se datorează, în parte, imperfecțiunii programelor de căutare, pe de altă parte, inexistenței informațiilor căutate. Producătorii programelor de căutare încearcă tot timpul să îmbunătățească aceste programe, desfășurînd o intensă activitate de cercetare în acest domeniu. Să sperăm că aceste unelte se vor perfecționa și le vom putea utiliza, ca să găsim, cu un efort minim exact informațiile pe care le căutăm.


BYTE România - august 1997


(C) Copyright Computer Press Agora