Ricerca distribuita

La ricerca distribuita è un modello di motore di ricerca in cui le attività di scansione del Web, indicizzazione ed elaborazione delle query sono distribuite tra più computer e reti.

In origine, la maggior parte dei motori di ricerca erano supportati da un singolo supercomputer. Negli ultimi anni, tuttavia, la maggior parte è passata a un modello distribuito. La ricerca di Google, ad esempio, si basa su migliaia di computer che eseguono la scansione del Web da più posizioni in tutto il mondo.

Nel sistema di ricerca distribuito di Google, ogni computer coinvolto nell'indicizzazione esegue la scansione e rivede una parte del Web, prendendo un URL e seguendo ogni collegamento disponibile da esso (meno quelli contrassegnati per l'esclusione). Il computer raccoglie i risultati della scansione dagli URL e invia tali informazioni a un server centralizzato in formato compresso. Il server centralizzato coordina quindi tali informazioni in un database, insieme alle informazioni di altri computer coinvolti nell'indicizzazione.

Quando un utente digita una query nel campo di ricerca, il software DNS (Domain Name Server) di Google inoltra la query al cluster di computer più logico, in base a fattori come la sua vicinanza all'utente o quanto è occupato. Nel cluster del destinatario, il software del server Web distribuisce la query a centinaia o migliaia di computer per eseguire la ricerca contemporaneamente. Centinaia di computer eseguono la scansione dell'indice del database per trovare tutti i record rilevanti. Il server di indicizzazione compila i risultati, il server di documenti raccoglie i titoli e i riepiloghi e il generatore di pagine crea le pagine dei risultati di ricerca.

Alcuni progetti, come Wikia Search (ex Grub) si stanno muovendo verso un modello di ricerca ancora più decentralizzato. Analogamente ai progetti di elaborazione distribuita come SETI @ home, molti progetti di ricerca distribuita sono supportati da una rete di utenti volontari i cui computer eseguono software client in background.