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
, subtitluri, în tagurile
, 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.