I normali programmi di ricerca sono necessariamente poco efficienti perché sono implementati in modo assai semplice: non fanno altro che “attraversare” tutte le directory del disco, aprire in lettura i files contenuti in ciascuna (eventualmente tralasciando i tipi di file che non contengono testo in chiaro, ad esempio i file eseguibili) e leggere tutto il contenuto cercando le stringhe che coincidono con quella impostata per la ricerca. È evidente che quando il disco contiene molti file, e ancor di più quando si accede ad un disco di rete, il tempo necessario a terminare una ricerca può diventare assai lungo. D’altro canto questa modalità di ricerca è molto semplice da implementare ed è adeguata per gran parte delle applicazioni. Quando la mole dei dati rende impraticabile questo approccio semplificato è necessario usare tecniche di ricerca più sofisticate.
Gli algoritmi di ricerca efficiente per parola chiave sono attualmente un argomento “di punta” della tecnologia informatica in quanto costituiscono il cuore dei servizi di indicizzazione della rete Internet, fra i quali il più noto è Google. Tali algoritmi si basano essenzialmente sulla generazione preventiva di indici inversi che poi vengono utilizzati per velocizzare la ricerca. L’indice inverso dal punto di vista funzionale non è altro che una tabella nella quale vengono registrate tutte le parole estratte da tutti i files, ed a ciascuna parola viene associata la lista di nomi dei file che la contengono. La successiva ricerca viene fatta sull’indice inverso, anziché sui files originali, ed il vantaggio consiste nel fatto che la tabella può essere strutturata in modo da rendere la ricerca estremamente più veloce.
È facile comprendere che la maggiore efficienza di ricerca viene ottenuta a spese di una occupazione di disco non trascurabile: l’indice inverso può raggiungere dimensioni paragonabili alla somma delle dimensioni di tutti i file indicizzati. Inoltre ogni volta che il contenuto di un file cambia, oppure ogni volta che un nuovo file viene aggiunto, anche l’indice deve essere, almeno parzialmente, ricostruito. Tanto che queste tecniche sono poco adatte per situazioni in cui le operazioni di aggiornamento dei files sono molto più numerose delle operazioni di ricerca per parola chiave, dato che il tempo impiegato per la rigenerazione degli indici non è compensato da quello risparmiato complessivamente nelle ricerche.
Esistono numerosi programmi commerciali per ambiente Windows basati su tecniche di indicizzazione, recentemente l’organizzazione Google, quella che foprnisce il più noto strumento di ricerca sulla rete Internet, ha rilasciato “Google desktop”: un’applicazione per MS-Windows che consente di effettuare ricerche sui files del porprio PC con le stesse modalità del motore on line. Per chi invece vuole implementare un sistema di ricerca all’interno di un sito Web, esiste un noto programma di indicizzazione, disponibile per Linux ed altre versioni di Unix; il suo nome è Glimpse, è sviluppato dall’università dell’Arizona e, oltre ad essere un ottimo strumento (pensato essenzialmente per l’uso come motore di ricerca nei siti web), è un progetto “open source” e quindi è utilizzabile per uno studio approfondito delle tecniche e degli algoritmi.
Il lettore interessato ad approfondire le tecniche di indicizzazione della rete può leggere una precedente risposta.