cominciamo con una premessa:
il contenuto su cui fare delle ricerche viene inserito nel database da un umano e non da uno spider. in questo modo ci concentriamo soltanto su come ordinare per rilevanza un documento data una chiave di ricerca.
analisi google:
google è considerato da molti il miglior motore di ricerca. questo status è ottenuto attraverso un numero di ksf (key success factors)
1. hardware dedicato che permette ricerche più veloci
2. software ottimizzato per la velocità (webserver proprietario, database proprietario...)
3. tecnologia poprietaria page rank (
http://www.google.com/technology/index.html)
4. altro?
per prima cosa è importante notare che google usa una combinazione di hardware e software il cui unico scopo è compiere ricerche efficienti all'interno del suo db proprietario. partendo da questo vantaggio un umile motore di ricerca senza grosse risorse può ben poco.
bene quindi google riesce a "tirare fuori" tutti i documenti che contengono le chiavi di ricerca inserite: e allora? anche gli altri motori ci riescono!
questo è vero, ma come ho appena detto questa è una seria limitazione per chi vuole creare qualcosa partendo da zeo. troppi costi nell'acquisto di pc e troppo know-how necessario nello sviluppo di software proprietario. se si vuole diventare concorrenti di google sono necessari investimenti seri.
assodato questo, come fa google a metterli in ordine di rilevanza?
usa la tecnologia proprietaria. detta in modo semplice conta quanti link aal sito che ospita il documento ci sono.
un link è come un voto di fiducia di una persona: quindi se qualcuno ha votato un sito vuol dire che il sito è meritevole.
il sistema poi va oltre dando più peso ai voti di quei siti che a loro volta sono considerati importanti. quindi essere linkati da un sito che a sua volta è linkato parecchio porta più voti che essere linkato da un sito di serie b.
detto in modo rozzo google cerca tutti documenti che soddisfino la vostra chiave di ricerca e poi li ordina a seconda della fiducia accordata ai siti che ospitano questi documenti.
altro?
probabilmente, ma vediamo questi possibili metodi più avanti
gli altri motori (quelli più piccoli)
qui dobbiamo partire dal presupposto che non abbiamo le risorse di google. che abbiamo un solo server e che il nostro software è standard. il nostro scopo è quello di creare un buon metodo per creare un ordinamento per rilevanza di (relativamente) pochi documenti inseriti nel nostro db.
la velocità pura (la forza bruta di google) ce la dobbiamo scordare, d'altro canto non avremo mai un db vasto come il suo. tuttavia la velocità/l'efficenza del nostro pc è una seria limitazione quindi dobbiamo in qualche modo sopperire a questa deficienza.
qui di seguito riportiamo i sistemi maggiormente utilizzati per sopperire al problema velocità e che cercano in qualche modo di creare un ordinamento per rilevanza:
1. densità/ripetitività della chiave di ricerca
metodo che utilizza il numero di ripetzioni di un chiave all'interno di un documento (o della sua relativa densità) per creare un ordinamento per rilevanza
2. posizionamento delle chiavi
metodo che da più valore ad un documento quando le chiavi di ricerca si trovano verso l'inizio di un documento o se all'interno di tag particolari (<h1>, <u>, <b>...)
3. dizionario e documenti indicizzati
google cosa fa?
prende un testo e cerca al suo interno la chiave inserita senza alcuna intermediazione allo stesso modo in cui lo fareste voi... solo molto più velocemente
e i piccoli? (ad esempio ill forum di !pc-facile)
- creano un dizionario in cui a ogni parola viene assegnato un numero unico (sql - si crea una tablla con due campi: 'id' e 'word')
- ad ogni documento viene assegnato un id unico. poi ogni parola viene tradotta utilizzando il dizionario creato prima e assegnata all'id del documento (sql - si crea una tablla con quattro campi: 'id', 'document_id', 'word_id', 'word_repetions')
- la ricerca viene effettuata su quest'ultima tabella e non sul documento originale
questo sistema ha un solo pregio ed è quello di velocizzare una ricerca (i motivi per cui questo è vero sono al di fuori dello scopo di questo topic). ovviamente ha anche molti difetti, per primo quello di non poter fare ricerche con frasi (cioè quelle ricerche con le chiavi racchiuse tra le virgolette) e secondo non tiene conto della posizione delle chiavi
4. caching delle query
metodo per cui i risultati delle query vengono salvati in modo da riproporre lo stesso risultato in caso un'identica chiave sia proposta. questo risparmia molte risorse in quanto si è notato che le venti chiavi di ricerca più utilizzate sono oltre il 50% delle chiavi utilizzate.
la difficoltà qui risiede nel trattamento dei differenziali, ovvero cosa succede quando si aggiungono altri documenti al database: come si comparta la cache in questi casi?
5. clickthrough e last click
metodo che conta il numero di volte che un risultato viene cliccato. più volte verrà cliccato più verrà considerato rilevante. ai risultati che erano posti in fondo all'ordinamento e che vengono cliccati vengono assegnati più punti in qunato meno visibili.
il last click parte dal presupposto che l'ultimo risultato che si clicca contiene il documento meigliore e quindi sia più importante degli altri.
entrambi i sistemi funzionano soltanto quando combinati al metodo del "caching delle query"
abbastanza materiale a cui pensare piercing?