Condividi:        

?Funzionamento/Progettazione di un motore di ricerca

Discussioni e opinioni costruttive sul mondo dell'informatica.
Per la soluzione di problemi specifici fare riferimento alle sezioni di assistenza!

Moderatori: aurelio37, Anthony47, axelrox

Postdi piercing » 24/09/02 22:26

beh... non voglio rifare google, ma mi piacerebbe cominciare a vedere in giro dei motori di ricerca intelligenti...

faccio un altro esempio... prendiamo la ricerca qui sul forum di pcfacile... la ricerca è solo sul contenuto per esempio, si mette una parola e trova quella...

estendiamo la ricerca... e troviamo ad esempio singolari e plurali... stiamo cominciando a dettare delle "regole" alla ricerca... sappiamo che cercare "cane" o "cani" è uguale... aggiungiamo poi che cane deve essere un valore di rilevanza... nel senso che è differente il fatto che uno scriva "porco cane" (ooopppssss) come esclamazione di un topic che parla di schedavideo, piuttosto che in uno in cui si parla espressamente di "cani".
Solo da un DB questo non può scaturire... servono delle leggi, degli algoritmi di ricerca... delle cosiddette metaricerche.... per esempio si potrebbe implementare una sorta di pagerank alla google, segnando le ricerche inserite e le soluzioni più cliccate... questo già potrebbe ordinare le soluzioni...

mi serve un pò di teoria insomma... che alla pratica poi ci penso io....

il progetto che ho in testa è grosso... anche parecchio... (non è google!! :D ) però diventerebbe un grande strumento per il mondo internet...

gli esempi che posso fare sono tantissimi... in tutti i campi... ed è proprio questo il punto...

si crea un dizonario con i termini da indicizzare... (si può anche partire da un intero vocabolario... ma basta anche molto meno... un sito di cani cosa volte che indicizzi? razze, nomi ecc... ecc...) e poi tocca trovare solo come agire....

qualcuno ha capito cosa voglio fare? e qual'è la differenza tra un motore di ricerca di internet? io parlo di ricerca di contenuto.... che è un discorso diverso...
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Sponsor
 

Postdi kadosh » 24/09/02 23:32

Il PageRank è un ottimo metodo ma non è detto che il binomio Più Linkato = Più Giusto sia esatto. Se io volessi cercare all'interno di varie pagine una combinazione lineare di parole, non andrò a cercare il risultato più richiesto dagli altri o con maggiore probabilità di essere cercato ma quello che sto chiedendo io!!
Il concetto di ricerca personale fino ad ora non l'ha preso in considerazione nessun motore di ricerca ma solo un prototipo di Network intelligente che stanno sviluppando al MIT di Chicago da 6 anni e che ho trovato sfogliando i miei numeri di Science; se ne trovo ti posto link a cui rimandano, ora sono sul rinko andante...'nanotte ;)
Ch®is ˜˜ www.glgroup.it˜˜ {~Up You® Life~}™ Semper Fidelis
Avatar utente
kadosh
Moderatore
 
Post: 3791
Iscritto il: 24/09/01 01:00
Località: Roma

Postdi piercing » 24/09/02 23:46

beh.... in termini assoluti lo è kad...

parlando di ricerche su internet è ovvio che il sito più linkato è effettivamente quello che ha maggior probabilità di essere cliccato...

ovvio che può non essere la risposta che cerchi!!!
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi piercing » 25/09/02 23:00

bene... mi accingo alla terza notte insonne... e neanche un aiutino da voi...

'NFAMI... come si dice da ste parti! :evil:
Avatar utente
piercing
Moderatore
 
Post: 7569
Iscritto il: 10/04/02 10:34
Località: Roma

Postdi kadosh » 25/09/02 23:19

Sto cercando roba per la rete...ma non ce ne è di molta e scritta bene... e poi noi, parlo anche per gli altri va ;), siamo gente che lavora.......te....mah :D :D :lol:
Ch®is ˜˜ www.glgroup.it˜˜ {~Up You® Life~}™ Semper Fidelis
Avatar utente
kadosh
Moderatore
 
Post: 3791
Iscritto il: 24/09/01 01:00
Località: Roma

Postdi webmaster » 26/09/02 15:08

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?
Avatar utente
webmaster
Moderatore
 
Post: 3503
Iscritto il: 01/08/01 01:00

Precedente

Torna a Discussioni


Topic correlati a "?Funzionamento/Progettazione di un motore di ricerca":


Chi c’è in linea

Visitano il forum: Nessuno e 25 ospiti