Con la diffusione di Internet, la quantità di informazioni reperibili sta raggiungendo dimensioni colossali. In passato c’erano dei motori di ricerca specifici per ogni protocollo: Archie per le ricerche su server ftp, Veronica per i server gopher ed altri. Oggi servizi come ftp, gopher, wais ecc., risalgono alla preistoria di Internet: lo sviluppo del più noto web con il protocollo http, ha cambiato il modo di pubblicare le informazioni online renedendole facilmente accessibili anche se, non sempre facilmente reperibili.
Poteva mancare un’applicazione per aiutare gli utenti di Internet ad orientarsi in quest’immensa ragnatela? Certo che no e sono nati i motori di ricerca che ormai sono dei compagni di viaggio nelle navigazioni nel mare di Internet. Le componenti fondamentali di un motore di ricerca sono essenzialmente tre:
- Lo Spider – sinonimo di crawler, worm, web bot, è un agente software che si occupa di recuperare il contenuto delle pagine web sparse nella grande rete. Seguendo i link presenti all’interno dei documenti HTML, restituisce al search engine il contenuto dei documenti recuperati. Gli spider utilizzati dagli odierni motori di ricerca sono programmati in modo da restituire un rapporto molto dettagliato di informazioni sul documento recuperato. Per rendere la fase di spidering più veloce i motori di ricerca mandano più di un agente in giro per la rete condividendo le strutture dati utilizzate in questa fase. La scalabilità dell’intero processo dipenderà, quindi, dall’abilità con cui si suddividono le informazioni e dal modo con cui si ripartisce il carico di lavoro tra tutti gli agenti. La creazione di uno spider è abbastanza semplice; iniziando da una pagina web si attraversano i link di questa e si salta ad altro indirizzo web. Il formato del file di output, che viene mandato al server, deve essere deciso in base alle esigenze dell’indexer. Per fare in modo di non veicolare lo spider su pagine che non si desidera indicizzare è bene scrivere un file robots.txt che risieda sulla radice del sito. Il suo formato è molto semplice e consiste in più linee di testo : dove i due possibili valori di sono: User-Agent e Disallow. Ecco ad esempio il file robots.txt del sito di Microsoft (www.microsoft.com/robots.txt).
- L’Indexer – questo strumento lavora con i dati provenienti dallo spider. Ad ogni parola passata dallo spider, viene creato un indice con il link corrispondente, ma dato che le parole chiave sono numerosissime si raggiungono indici di diverse gigabyte di dimensione, quindi si utilizzano anche metodi di compressione come quelli di Huffman o LZ. L’indice è anche sezionato nel cosidetto dizionario, ad un livello più alto, la suddivisione delle parole chiave nelle diverse lingue supportate.
- Il Searcher – si tratta dell’oggetto con il quale interagiamo quando si sottomette una query di ricerca. Gli obiettivi principali durante la realizzazione di un searcher sono due: il linguaggio query utilizzato non deve richiedere conoscenze specifiche che limitino in maniera evidente l’utilizzo da parte di chi ne è privo e tale linguaggio deve ridurre al minimo la possibilità di comporre in modo ambiguo una query. Nel linguaggio naturale si usano termini come “E” o “O” con significati dipendenti dal contesto di utilizzo. Nelle ricerche però l’80% di queste viene effettuata senza logica booleana e quindi il searcher deve essere in grado di analizzare le parole per poter riconoscere anche tale logica. Un problema di grande entità è poi la grandezza degli indici e la perdita di prestazioni nelle ricerche man mano che tali indici crescono, per questo motivo si cerca di suddividere il lavoro su più server sempre più potenti.
In questo articolo ho trattato le basi della strutturazione dei motori di ricerca, questo campo è in continua evoluzione per permetterci sempre migliori ricerche sul web, anche perché ci sono interessi economici molto importanti che si muovono insieme ai search engine. Nel futuro il web si sposterà sempre di più verso elementi multimediali ed anche i motori di ricerca si dovranno adeguare, chissà anche inserendo nella lista dei siti trovati una piccola anteprima della pagina principale del sito.