lunedì 20 marzo 2006

L' Information Retrieval e il funzionamento dei Motori di Ricerca

ATTENZIONE!L'articolo che stai leggendo è stato scritto piu' di un anno fa. Le informazioni presenti potrebbero non essere aggiornate!
----------------------------------------------------------------------------------------------
Comprendere le basi del funzionamento dei motori di ricerca aiuta a vivere meglio... almeno in ambito SEO & SEM ;-)

Ecco allora un buon riassunto dei concetti "di base" :

Non si puo' parlare di motori di ricerca senza introdurre il concetto di "information retrieval" che altro non è che il nome che viene comunemente assegnato alla tecnologia alla base dell'interrogazione e della ricerca su archivi digitali.

"To retrieve" , in inglese "riportare" , "riportare indietro" rende bene il senso delle ricerche sui motori di ricerca: individuare fra miliardi di documenti archiviati quelli piu' adatti ad essere "ri-portati" agli utenti a seguito di precise interrogazioni.

Cosi' come non si puo' consultare una biblioteca senza un sistema di indicizzazione e catalogazione dei libri allo stesso modo non è pensabile di ricercare informazioni su Internet senza l'utilizzo di opportuni strumenti di information retrieval:

I motori di ricerca !

Inizialmente i "motori di ricerca" che parevano piu' idonei erano degli archivi di siti catalogati manualmente per argomenti , le cosiddette Directory, di cui Yahoo, siamo nel 1994 ne è il piu' famoso esempio.

Ma il numero di documenti, pagine, siti web sempre crescente (dell'ordine di miliardi) e l'enorme quotidiana mole di nuove pubblicazioni hanno fatto si che l'importanza delle Directory "umane" si affievolisse di fronte al nascere di algoritmi automatizzati di archiviazione, quali sono i MDR (motori di ricerca) propriamente detti.... il primo importante fu certamente Altavista, che è rimasto molto in auge fra gli utilizzatori della rete fino alla nascita di un certo Google (1998), che ha fatto delle innovative tecnologie di information retrieval il suo cavallo di battaglia!

Vediamo quindi di approfondire quali sono fondamentalmente i compiti e le caratteristiche principali di funzionamento di un MDR, la domanda è "Come funziona fondamentalmente un motore di ricerca?"
Approssimando l'attività di un motore di ricerca si distingue in piu' fasi fondamentali:

1. "Ricerca dei documenti da catalogare"

La prima cosa da fare per un motore di ricerca è quella di trovare tutti i documenti da catalogare: piu' ne troverà e maggiore sarà la completezza delle informazioni che potrà fornire ai propri utenti, quindi è compito di un MDR (motore di ricerca) di facilitare il recupero del maggior numero possibile di documenti ....


Agli albori della rete (bè pochi anni fa a dire il vero) uno degli strumenti principali per ottenere tale scopo era quello di richiedere agli autori di siti (documenti) di segnalare in appositi Form l'indirizzo (la URL) di ogni nuovo sito pubblicato. Il sistema è certamente ancora valido e utilizzato ma di sicuro non è piu' lo strumento principe affinchè un proprio sito venga catalogato dai motori di ricerca...


Infatti oggi tutti i MDR utilizzano sistemi informatici per la ricerca dei documenti da catalogare in rete: i cosiddetti SPIDER ! ("ragni", che camminano sulla rete/ragnatela). Uno spider è un software ( o meglio uno Bot, uno script automatico) che partendo da una lista di URL (indirizzi) di documenti/siti da catalogare "segue" ogni possibile LINK (collegamenti ad altri documenti) che trova, catalogando di ciascuno le informazioni presenti.

Quindi per far si che un ns documento venga catalogato da un MDR dobbiamo fare in modo di "ricevere una visita" da parte degli spider... basterà quindi che qualche altro sito già catalogato inserisca un LINK verso il ns oppure dovremo segnalare la URL direttamente al motore di ricerca.


2. "Indicizzazione"

La ricerca dei documenti in rete avviene continuamente in modo che il MDR possa avere in archivio sempre documenti il piu' possibile aggiornati ... ma come avviene la catalogazione delle pagine trovate?

Bè qui ogni motore utilizza una versione di Spider differente ed ognuno segue precise regole ma la cosa che sono tutti "costretti" a fare è archiviare ogni singolo documento in INDICI organizzati in modo che al momento delle richieste da parte degli utenti sia piu' facile e veloce ritrovare le migliori informazioni da fornire come risultato: ecco perchè questa fase viene chiamata INDICIZZAZIONE .

Quando si parla quindi di archiviazione o catalogazione di un documento su di un MDR il termine corretto è : "indicizzazione".

Piu' organizzato sarà l'indice piu' efficente saranno velocità e congruenza dei risultati forniti. Compito dell'indicizzazione e quindi degli indici dei documenti creati è quello di facilitare il ritrovamento del risultato piu' consono alla query di ricerca effettuata dall'utente: in linea generale viene creato un super-indice formato da tutte le parole trovate dallo spider nella rete ordinate alfabeticamente; a ciascuna parola (eliminate le cosiddette "stopword" cioè gli articoli, le congiunzioni ecc ecc) viene associato l'ID dei documenti che la contengono .

Quando un utente cercherà ad esempio, "albero" il MDR potrà andare velocemente (grazie all'ordinamento alfabetico) a cercare tutti i documenti prcedentemente indicizzati che contengono tale parola fornendo velocemente una lista di risultati.
In realtà motori come Google, distribuiscono su piu' server il compito di effettuare la ricerca: per ogni query lavorano oltre 500 server! ...in questo modo riescono a fornire risultati molto rapidamente.


3. "Ranking"

Ma il numero elevato di documenti rende necessario al MDR dover compire un ulteriore passo: non solo fornire tutti i documenti possibili che contengono una determinata query, ma gioco forza, fornirli ai propri utenti con un ordine di importanza prestabilita: prima i documenti che meglio rispondono alla ricerca poi gli altri...

Ma come viene calcolato il Ranking (l'importanza) di un documento all'interno di tutti i risultati possibili? Come vengono ordinate le SERP (Search Engines Results Pages) , cioè i risultati dei motori di ricerca?

Siamo arrivati velocemente al punto nodale dell'argomento : come ottenere un miglior posizionamento di un proprio sito/documento sui motori di ricerca:

Tecnicamente per ogni query (ricerca) di un utente l'algoritmo del MDR assegna o meglio calcola "un punteggio" ad ogni documento indicizzato e fornisce dei risultati in ordine di importanza: prima i documenti che hanno ottenuto un maggior punteggio poi tutti gli altri...

Il modo e i diversi elementi con cui ogni algoritmo (perchè ogni MDR ne ha uno proprio!) assegna un punteggio ad un documento NON è possibile conoscerlo (bè, neanche la formula della Coca-cola la conosce nessuno!) ma attraverso lo studio e la sperimentazione è possibile cercare di avvicinarsi a capire quali sono gli elementi piu' importanti:

Ogni Mdr ha la sua "formula" ogni MDR ha i suoi criteri... Comunque fondamentalmente i MDR assegnano "punteggi" su due livelli:

1. relativamente e puntualmente alla query fatta e quindi a "fattori interni" al documento relativi a posizione e corrispondenza all'interno del documento stesso delle parole cercate ( frequenza, distribuzione, posizione, ecc)

2. In funzione dell'importanza del "documento" a prescindere dalla query ... cioè in fase di indicizzazione ogni documento assume un "punteggio" in base a "fattori esterni " a fattori di carattere generale e non "puntuale" quali sono ad esempio il numero di Link che il documento riceve in rete e in pase alla qualità degli stessi. (vedi avanti "Page Rank" nel caso specifico di google)

Vediamo di fare un semplice esempio del funzionamento di quanto detto, immaginiamo una query qualunque:

"Motori di ricerca"

Ignorata la "di" perchè stopword, i server che contengono l'indicizzazione incroceranno tutti i documenti (indicati da un numero di id) che contengono le parole "motori" e "ricerca" ...


Motori id100 id201 id203 id444 ecc ecc ecc
Ricerca id100 id123 id245 id444 ecc ecc ecc

Tutte e due le parole presenti id100 id444


I documenti n° 100 e N° 444 sembrano i piu' idonei, un opportuno algoritmo provvederà a calcolare il "punteggio" da assegnare ai documenti, e prima di mostrarli nelle "serp" , il MDR andrà anche "a leggere" sui server dove i documenti fisicamente risiedono in copia e costruirà lo "snippet" cioè la frase del contesto che accompagna ogni risultato, per poi finalmente offrire i risultati all'utente!

Il tutto in qualche frazione di secondo! Ecco lo schema di funzionamento di Google :

1. Il web server invia la query al Datacenter :

2) Qui, sui dati "indicizzati" (vedi Phrase Rank) agiscono gli algoritmi che restituiscono la lista ordinata per importanza dei documenti che la contengono

3) Viene creato lo "snippet" grazie alle versioni di cache presenti sui "Documents server"



4)... "infine" i risultati vengono mostrati (il tutto in una frazione di secondo) all'utente!
Lo studio di questi meccanismi e soprattutto degli algoritmi che assegnano i "punteggi" ai documenti da mostrare in "serp" , e le relative contromosse possibili per cercare di migliorare il "ranking" di propri documenti, è cio' che viene definito: "Posizionamento sui motori di ricerca" !
Da qui in avanti cercheremo di analizzare puntualmente tutti i possibili elementi che contribuiscono a formare il Ranking delle serp sui Mdr.

Da segnalare sull'argomento:
Sul db di Google e sui sistemi di indicizzazione dei dati storici: Google Big table