Secondo quali criteri vengono effettuate le ricerche tramite i motori di ricerca (Google, ecc.) e quali linguaggi di programmazione sono atti a implementare tali algoritmi.

L’attività di un motore di ricerca è suddivisa in due fasi
nettamente distinte:

1) ricerca delle informazioni,
2) risposta alle richieste da parte degli utilizzatori.

Entrambe le fasi vengono effettuate da sistemi complessi, costituiti da
numerosi computer che utilizzano vari programmi ciascuno dei quali
può essere realizzato con linguaggi diversi.

Esaminiamo un po’ più in dettaglio le due fasi.

Ricerca delle informazioni

Il primo compito di un motore di ricerca consiste nel “navigare” per la rete
Internet per trovare le informazioni. Questo servizio viene svolto da programmi
chiamati robot, spider (ragni) o crawlers (nuotatori).
Si tratta di programmi che a partire da un certo insieme di URL1
seguono la struttura ipertestuale del Web per accedere ai documenti disponibili
e generare indici dei termini in essi contenuti.

Il funzionamento di un robot è semplice: mentre analizza ogni documento
estrae le URL in esso contenute e ne fa un elenco, che poi utilizza per
accedere a nuovi documenti, e così via, ricorsivamente.
Il risultato dell’analisi è costituito da indici, ovvero da elenchi di
termini associati alla URL del documento che li contiene. Questi indici vengono
utilizzati nella fase di ricerca per proporre all’utilizzatore un elenco
di URL contenenti il termine cercato.

Anche se il principio è semplice, l’effettiva implementazione
di un robot efficace può essere complessa. Infatti l’ampiezza
della rete è talmente grande che occorrono apposite strategie per
consentire di ottimizzare la ricerca: ad esempio si possono utilizzare
vari robot in punti diversi della rete, ma questi devono coordinarsi fra
loro in modo da evitare di accedere agli stessi documenti. Inoltre
occorre tenere conto del fatto che i documenti in rete cambiano più
o meno frequentemente e quindi la ricerca va ripetuta continuamente.
Le effettive
strategie di ricerca sono di solito tenute segrete perché possono
costituire un vantaggio per il motore di ricerca che adotta una strategia
migliore di altri.

Un altro aspetto fondamentale è costituito dalle tecniche di
indicizzazione. È evidente che un semplice indice che associa
ad un particolare termine un elenco di URL diventa presto quasi inutilizzabile.
Tutti i motori di ricerca hanno sviluppato algoritmi per associare ad ogni
URL un coefficiente di “rilevanza”, ovvero una sorta di misura di quanto
la particolare URL può contenere informazioni importanti rispetto al
dato termine. Questo coefficiente viene calcolato, ad esempio, tenendo
conto del numero di volte che il termine compare, del fatto che compaia in
un titolo e di molti altri parametri. Questo aspetto, ancora più dell’efficienza, è
importante per garantire risposte utili agli utilizzatori, quindi gli algoritmi
di indicizzazione sono tenuti segretissimi perché costituiscono
la principale differenza fra un motore ed un altro.

Risposta alle richieste degli utilizzatori

Tutti
coloro che usano anche sporadicamente i servizi della rete
Internet utilizzano qualche motore di ricerca ed hanno quindi ben
presente il loro funzionamento: la funzione principale consiste nel
proporre un certo numero di URL “rilevanti” relativamente ai termini
utilizzati per la ricerca. Per valutare la rilevanza vengono utilizzati
i coefficienti
di cui abbiamo parlato nel paragrafo precedente.

Anche in questo caso il principio di funzionamento è semplice, ma
il compito è reso complesso dalla quantità delle informazioni
che devono essere gestite. Mentre stiamo scrivendo (luglio 2004)
vengono attribuite al motore Google 3,3 miliardi di pagine indicizzate ed al
motore Alltheweb 3,1 miliardi di pagine. È evidente che
per rendere sufficientemente rapide le ricerche e quindi le risposte
occorre utilizzare sistemi di database particolarmente ottimizzati per questo
tipo di ricerca e computer di potenza adeguata.

Ad esempio il motore Google si basa2
su numerosi server distribuiti nel mondo;
ciascuno di questi server è costituito da un “cluster” di
migliaia di PC con vari livelli di ridondanza, in grado di sopportare
vari tipi di guasto senza interrompere il servizio. Gli indici
richiedono parecchi Terabyte di dati suddivisi fra i PC che costituiscono
il cluster. Ogni operazione di ricerca viene distribuita
su molti PC che operano in modo collaborativo.

Gran parte dell’architettura software di Google è implementata in C/C++
e può operare indifferentemente su sistema operativo
Solaris o Linux3.

Approfondimenti:


Note:

  1. Il termine URL (Universal Resource Locator) indica
    l’indirizzo di un documento nella rete web. Ad esempio l’indirizzo di
    questo documento che state leggendo è:
    http://www.vialattea.net/esperti/php/risposta.php?numero=5192.

  2. Questi dati sono tratti da un articolo del marzo 2003. Lo stesso
    articolo sostiene che le apparecchiature vengono sostituite in modo
    scaglionato nel tempo, ma comunque ciascun PC ha una vita operativa
    compresa fra due e tre anni.

  3. Vedere ad esempio:

    http://www.computer.org/micro/mi2003/m2022.pdf