Come creare un motore di ricerca

Per costruire un search engine bisogna sviluppare un crawler, alcuni database relativi ai contenuti, algoritmi di ranking, piste logiche e un modulo di visualizzazione dei risultati ( serp ).

In questa pagina sono raccolti alcuni miei appunti, scritti durante la realizzazione di un motore di ricerca interno in un network di siti web.

Il crawler

Il crawler ( bot o spider ) è l'elemento più semplice da programmare. Consiste in un programma automatico per navigare nelle pagine web.

Quali sono le funzioni del bot?

Il programma scarica il codice html di una pagina web in un determinato indirizzo URL.

Per farlo l'agente deve lavorare online con una connessione internet aperta.

Dove prende l'indirizzo url? Gli indirizzi Url sono forniti dalla tabella URL del database, dove sono registrati gli indirizzi dei submit manuali, quelli dei link delle pagine e i contenuti già indicizzati da aggiornare.

Una volta scaricato il contenuto della pagina, il crawler salva il codice sorgente della pagina nella tabella PAGE del database.

In questo modo, le successive operazioni di analisi possono essere svolte offline, senza una connessione internet aperta, da altri algoritmi.

Nota. Il lavoro del crawler è simile a quello di un fotografo. Si reca sul posto, scatta una fotografia alla pagina e archivia la foto ( dati ) nel database del motore di ricerca. Non è compito del crawler valutare il ranking, analizzare le informazioni o la qualità del contenuto.

Il database delle pagine

Il database delle pagine web ( PAGE ) è una tabella contenente il codice sorgente delle pagine web visitate dal crawler.

La struttura del database è la seguente:

  • indirizzo url
  • sorgente html
  • data aggiornamento

L'indirizzo url è il campo chiave del database. E' una chiave univoca che collega la pagina alle altre tabelle del database.

Nota. Nel database non sono registrate le immagine ma soltanto il codice sorgente in linguaggi html della pagina web.

Gli algoritmi di analisi

I dati contenuti nella tabella PAGE sono analizzati offline da altri algoritmi del motore di ricerca.

Ogni algoritmo ha uno scopo preciso.

L'algoritmo di pulizia del codice html

Un algoritmo si occupa di eliminare i tag irrilevanti del codice sorgente.

  1. Legge il codice sorgente di un record del campo PAGE
  2. Elimina le informazioni irrilevanti ( es. javascript, iframe, css, sezione <head>, ecc ).
  3. Salva il risultato in un'altra tabella PAGE2

Nota. Questo algoritmo non lavora online, non ha bisogno di visitare la pagina web, perché la copia del codice sorgente della pagina è già stata salvata dal crawler nel database del motore di ricerca.

La struttura della tabella PAGE2 è quasi identica a quella della tabella PAGE.

Tuttavia, nella tavola PAGE2 le informazioni sul contenuto della pagine sono più pulite e pronte per le analisi successive.

Inoltre, sono presenti dei campi aggiuntivi:

  • Status. E' il codice di avanzamento del processo di elaborazione dei dati.
  • Altre informazioni. Ad esempio, un campo dove registrare il numero di link interni presenti nella pagina, un altro per indicare il numero dei link esterni, le eventuali keyword, ecc.

Algoritmo di individuazione dei link nella pagina

Un algoritmo legge i record della tabella PAGE2 per individuare i collegamenti ipertestuali verso altre pagine.

L'algoritmo verifica se i link sono presenti nella tabella URL.

Se un link non è presente, viene aggiunto.

Algoritmo di selezione del contenuto

Questo algoritmo si occupa di pulire ulteriormente il contenuto della pagina, eliminando i tag <A> e quelli già analizzati.

Il risultato finale è un meta-testo quasi coincidente con il contenuto informativo della pagina.

Nota. Alcuni codici di formattazione come <P> <B> <UL> <LI> <H1> <H2> ecc. sono lasciati nel documento per consentire le successive operazioni di analisi semantica del contenuto.

La pagina viene salvata nella tabella PAGE2.

Con l'update del record viene aggiornato anche il campo STATUS con un codice ( es. STATUS=01 ) per documentare l'avanzamento del processo di elaborazione.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base