Motori di ricerca  

di EaglE
Un motore di ricerca è un sistema automatico che analizza un insieme di dati spesso da lui stesso raccolti e restituisce un indice dei contenuti disponibili classificandoli in base a formule matematiche che ne indichino il grado di rilevanza data una determinata chiave di ricerca.
Un motore di ricerca si può dividere in tre parti:
  
Crawling
Scaricare tutte le pagine
Indexing
Salvare i dati con la possiblità di recuperarli in tempo veloce (information retrieval)
Query Processing
Ordinare i risultati di una ricerca in base alla qualità/pertinenza dei risultati

  

Crawling

  

Un motore di ricerca deve scaricare tutte le pagine presenti in rete.
Ci sono problemi nel fare ciò:
  
Pagine dinamiche
Spammers
Scelta di un ordine opportuno

Pagine dinamiche

Una pagina puo variare contenuto passando parametri differenti, su alcuni siti quei parametri sono casuali, possono quindi esserci moltissime pagine con indirizzo differente ma con lo stesso contenuto, alcuni parametri a volte vengono addirittura utilizzati per salvare session o cookie.
Una pagina dinamica cambia contenuto molto spesso, basti pensare a un blog o a un forum molto visitato, è compito del motore di ricerca stabilire ogni quanto riscaricare le pagine trovando un buon compromesso tra il non avere pagine troppo vecchie e il non appesantire troppo il server ospitante il sito.
  

Spammers

Uno spammer può rovinare il lavoro di un crawler in vari modi:
può inserire nella propria pagina migliaia di link che puntano al proprio sito, con nomi di pagine casuali, in modo da trattenere il più possibile il crawler sul sito, facendogli sprecare banda, tempo e CPU
può rallentare le risposte per far perdere tempo
può inserire link a altri siti (che faranno la stessa cosa) per innalzare la propria popolarità
Esempio:

Passo 1:
il crawler ha 100 pagine da visitare, 1 è di uno spammer.

Pagine problematiche 1%
Passo 2:
dopo averle visitate si supponga che le 99 pagine normali contengano 10 link a pagine normali e quella dello spammer 100 link a proprie pagine (create nello stesso modo)

Ora il crawler ha 990 pagine normali e 100 di spammer

Pagine problematiche 9.17%
Passo 3: l'esplorazione continua nello stesso modo

9900 - 10000

50.25% !
Passo 4:

99000 - 1000000

99% !!

Scelta di un ordine opportuno

Scaricando le pagine si troverà all'interno di esse link a nuove pagine.
Ci sono vari modi di procedere nello scaricare le nuove pagine:
  
BFS
Qualita'
Casuale

  
BFS - Breadth First Search (Visita in ampiezza)
I nuovi link vengono inseriti in una coda, in questo modo i nuovi link trovati sono i primi a essere visitati. Questo metodo ha il pregio di non favorire alcuni siti rispetto ad altri.
Qualita'
I nuovi link vengono inseriti in una coda con priorità con un ordine dato dalla popolarità (parziale) che ha il sito. Questo metodo ha il pregio di esser poco vulnerabile all'azione degli spammer.
Casuale
Viene scelto il successivo sito da visitare in modo casuale.

  

Indexing

I dati devono essere salvati in modo di poterli consultare velocemente, per fare ciò viene usata una struttura dati chiamata TRIE, ovvero un albero in cui ogni arco indica il passaggio da una lettera di una parola a quella successiva.
Le foglie di questo albero conterranno una lista di pagine contenenti quella parola.
Esempio generale di una TRIE per la frase "there is a tavern in the town"
  

Ed ecco come viene usata una TRIE da un motore di ricerca   

Da ogni pagina vengono estrapolate tuttu le parole, vengono inserite in questa struttura e in ogni foglia raggiunta viene inserito il link alla pagina.

Questa struttura occupa molto meno spazio rispetto alla dimensione di tutte le pagine, solitamente viene tenuta in RAM e viene salvata, oltre al link alla pagina, anche la posizione della parola.

Query Processing

Questa fase si può dividere in due parti:
  
ricerca dei risultati
ordinamento dei risultati

La prima fase viene svolta facendo un'intersezione dei nodi dati scorrendo la TRIE per ogni parola della query.

La seconda parte è più complessa.
Due metodi tra i più noti sono PageRank e HITS.

HITS

A ogni pagina vengono associati due valori, authority e hub.
Il primo indica la qualità del contenuto della pagina, il secondo indica invece la qualità dei collegamenti contenuti nella pagina.
Il primo viene calcolato facendo una somma dei valori hub delle pagine che collegano alla pagina stessa, il secondo viene calcolato facendo una somma dei valori authority delle pagine a cui la pagina punta.
In poche parole: una pagina è buona se i collegamenti che puntano a quella pagina sono buoni, i collegamenti di una pagina sono buoni se il contenuto delle pagine a cui punta quella pagina sono buoni.

PageRank

A ogni pagina viene associato un numero indicante la popolarità.
Questo numero è dato dalla somma della popolarità delle pagine che puntano a quella interessata, ogni popolarità va divisa per il numero di collegamenti uscenti da ogni pagina.

  

dove P è la popolarità e L sono i collegamenti contenuti nella pagina.
  

HITS e PageRank sono solo un fattore moltiplicativo per il punteggio di una pagina. Il punteggio è calcolato guardando dove si trovano le parole cercate.
Una pagina con una parola nel titolo avrà un punteggio maggiore di una con la parola a fondo pagina. Una scala potrebbe essere:
  
1.nome sito
2.descrizione dei link provenienti da altri siti
<a href="http://miosito/pag">queste parole sono molto significative</a>
3.indirizzo pagina
4.titolo
5.sottotitoli
6.vicinanza parole

Google - alcune informazioni

contiene circa 8 miliardi di pagine (raddoppiano ogni anno)
ha 200000 PC non molto potenti coi quali soddisfa tutte le richieste
un PC viene cambiato solo quando si rompe
per ogni singola query mette in funzione 5 PC
200 milioni di ricerche al giorno
usa pagerank, ma è solo uno dei numerosi fattori.

Il mio motore di ricerca

E' diviso in 4 parti:
  
Interfaccia web
Crawler <a href="http://miosito/pag">queste parole sono molto significative</a>
Indexer
Query handler

La comunicazione tra i vari programmi è effettuata tramite socket.
Le pagine sono salvate su database dal crawler, ecco lo schema ER che rappresenta la situazione:
  

L'indexer poi legge tutto il database e inserisce i risultati nella trie.
Il query handler prende i risultati dall'indexer e li ordina dando un punteggio a ogni pagina, quel punteggio verrà moltiplicato per il logaritmo dei link che puntano al sito ospitante la pagina.
L'interfaccia web mette in comunicazione l'utente col motore di ricerca.
Ecco cosa pensano le persone...
Loggati e scrivi il tuo commento, e' molto importante per noi conoscere il tuo parere sui nostri articoli, grazie.



Powered by HackRoom
Attendere il caricamento...
Attendere il caricamento del vostro profilo...
Inserisci almeno due lettere
Attendere il caricamento...
Attendere il caricamento...