Categorie
Scienza

Come fa Google a cercare in tutto il suo database in una frazione di secondo quando cerchi qualcosa?

Bentornati ad un'altra eccezionale edizione delle domande di cultura generale !

Questa volta abbiamo cercato una curiosità scientifica :

Non dovrei 't impiega molto più tempo per cercare parole chiave in 2 miliardi di siti web?

Ed ecco le risposte degli esperti:

Google ha una pagina che risponde in qualche modo a questa domanda qui . Un riassunto super semplificato di tutto ciò è che Google non deve cercare in 2 miliardi di siti Web (in realtà dicono di aver eseguito la scansione di centinaia di miliardi di pagine) per ogni ricerca. Hanno già indicizzato ogni sito Web con tag utili in modo che possano passare rapidamente a un sottoinsieme di siti Web per fornirti.

Dopo aver ottenuto quel sottoinsieme di pagine, utilizzano diversi algoritmi che ne individuano il significato, la pertinenza, la qualità, l'usabilità, e il contesto della tua ricerca e le pagine stesse.

Quindi, per una risposta diretta alla tua domanda: hai ragione nel pensare che ci vorrebbe molto tempo per cercare il loro intero database ogni volta, ma erano abbastanza intelligenti da non doverlo fare.

Perché fondamentalmente non funziona nel modo in cui sembra che tu stia pensando, dal modo in cui lo esprimi.

Google ha effettivamente un bel po 'di informazioni sul processo complessivo disponibili qui: https: // www.google.com/search/howsearchworks/

Ma la versione semplice è questa : immagina una biblioteca. Se chiedi “dove sono tutti i libri sugli dei greci”, non sfogli tutti i libri della biblioteca, uno per uno, cercando di capire che si tratta di un dio greco. Cerchi le “divinità greche” nel catalogo e vedi che sono accantonate nella sezione 292: “Religione classica (religione greca e romana)”. Se hai più specifiche da lì, puoi restringere i libri particolari che potresti desiderare da lì (ad esempio 292. 211: “Greco e Roman Gods “) – ma l'importante è che qualcuno si sia già dedicato allo sforzo di ordinare e mettere in scaffale i libri in modo metodico e creare un indice (in questo caso) dagli argomenti ai libri per facilitarne la ricerca. Senza questo, saresti perso.

Allo stesso modo, Google non sta cercando quelle parole chiave “in 2 miliardi di siti web “, sito web per sito web, quando effettui la query. Google ha già eseguito la scansione di tutti questi siti Web, scoprendone l'esistenza stessa o perché qualcuno ha inviato manualmente un elenco di URL da indicizzare: https://developers.google.com/search/docs/guides/submit-URLs

Hanno costruito un comodo indice da (ea questo punto, questo probabilmente semplifica un po 'le cose, ma i principi di base ci sono) per l'insieme di pagine contenenti detta parola chiave , simile al catalogo della biblioteca, o, come dicono loro, “l'indice sul retro di un libro”: https: / /www.google.com/search/howsearchworks/crawling-indexing/

l'indice può quindi essere suddiviso in blocchi più piccoli e copiato su più server che saranno responsabili della risposta alle tue query. L'idea generale è che quando fai la tua query, la query viene inviata a più server che gestiscono ciascuno parte dell'indice data, in modo che la ricerca possa essere h andled più rapidamente. I risultati migliori di ciascuno vengono quindi combinati e classificati e ti viene offerto il miglior risultato complessivo.

Questo è un un po 'meno di cui si scrive, perché probabilmente è di minore interesse per la maggior parte delle persone che altrimenti potrebbero interessarsi al processo. Quindi, ho meno in termini di “presentazioni user friendly”, ma posso comunque indirizzarti, ad esempio, a pubblicazioni di ricerca. Questo sembra fornire una panoramica decente di molti dei concetti e delle tecniche coinvolte senza essere del tutto incomprensibile, se per qualche motivo vuoi scavare: https://research.google.com/pubs/archive/ 37043. pdf

Ma per l'analogia con la biblioteca, immagina che la tua libreria sia enorme e la sezione 292. 211 si estende su un'intera fila di scaffali. Potresti chiedere a una persona di guardare attraverso ogni libreria nella fila per afferrare ogni libro su cui sembra che riguardi Zeus, oppure potresti avere 10 le persone prendono ciascuna una libreria e fanno lo stesso. Si finisce con più o meno lo stesso risultato netto (una pila di libri su Zeus, o dieci pile di libri che vengono poi riunite in una pila di libri), ma puoi farlo potenzialmente in ~ 1 / 10 l'ora, utilizzando 10 x lo sforzo.

In breve, assolutamente fa richiede più di una frazione di secondo, in generale , per eseguire tale ricerca quando considera il lavoro totale svolto. Ma la stragrande maggioranza del lavoro viene eseguita una volta, in anticipo, e quel poco lavoro che resta da fare al momento della query da gestire la tua query esatta è suddivisa tra molte macchine per renderla più veloce possibile.

Ci sono molti risposte sbagliate qui da persone che hanno familiarità con i database ma non con i metodi di Google. Per essere onesti, anche la mia spiegazione di seguito non è del tutto aggiornata. Ma presumo che tu stia cercando di capire la tecnica, non di creare un motore di ricerca competitivo.

È vero che l'indicizzazione (e altri strumenti di database) sono importanti, ma non sono ciò che ha reso Google il vincitore nella ricerca. Oltre al loro algoritmo di posizionamento delle pagine, che ha restituito risultati effettivamente utili, hanno inventato un algoritmo chiamato map-reduce. Map-reduce è ciò che consente loro di cercare in enormi set di dati molto rapidamente.

È una combinazione di (puoi indovinare? ) una cartina e una funzione riduci funzione. Entrambi erano noti da molto tempo, ma combinarli e usarli per affrontare enormi set di dati è stato un grosso problema quando è stato introdotto per la prima volta.

https: //en.m.wikipedia. org / wiki / MapReduce

Map è un processo che richiede due funzioni: un punteggio funzione e una funzione di raccolta. La funzione di punteggio ( punteggio ) accetta una pagina web come input e restituisce un punteggio. L'altra funzione ( raccoglie ) accetta una funzione di tipo punteggio come input, lo esegue su ogni pagina web in un elenco e raccoglie i risultati. Mette le pagine in ordine in base al punteggio e restituisce, ad esempio, i primi dieci.

Se hai un milione di pagine web pagine, puoi distribuirle su 1, 000 computer con 1, ciascuno. Quindi, quando vuoi ordinare tutte le pagine in base a qualsiasi criterio, scrivi un punteggio che genererà un punteggio basato su tali criteri. Hai superato il punteggio su ogni computer e torna 1, 000 set di 10 risultati.

Quindi il passaggio di “riduzione” consiste nel combinare tutti i set di risultati e, ancora una volta, prendere la parte superiore comunque molti. Questo può essere ripetuto un sacco di volte, supponiamo di avere un miliardo di pagine da cercare. Basta aggiungere più computer ed eseguire il passaggio “Combina risultati, ordina e passa la X in alto” tutte le volte necessarie per ottenere un set di risultati gestibile.

Quindi, Google può cercare enormi quantità di dati molto velocemente perché suddivide il problema in piccoli blocchi e ha un gruppo di computer che esegue una piccola parte della ricerca. I risultati vengono filtrati e vengono combinati e ordinati più volte prima di essere presentati all'utente.