[VB.NET] Algoritmo di ricerca all'interno di un database

lunedì 21 settembre 2009 - 15.13

Carlotta87 Profilo | Newbie

Ciao a tutti, il mio non è tanto un problema di programmazione, più che altro vorrei sapere se qualcuno ha dei suggerimenti riguardo all'implementazione di un algoritmo di ricerca all'interno di un database. Mi spiego meglio: ho creato un database access a cui ci si connette da un applicazione in VB.NET. Questo database viene popolato dall'utente attraverso un'interfaccia grafica. Ora quello che dovrei riuscire a fare consiste nel fare in modo che, dopo aver prelevato un termine (stringa) da un file Excel, l'applicazione, attraverso un algoritmo tipo quello che utilizzano i motori di ricerca, vada a confrontare il termine prelevato con quelli contenuti all'interno del database e in base alla similitudine tra i due assegni un punteggio che in realtà è un distanza. Questa cosa in realtà l'ho già implementata attraverso l'algoritmo di Levenshtein che serve proprio a misurare la similitudine tra due stringhe: in base al numero di cambiamenti che dovrebbe effettuare per trasformare una stringa nell'altra assegna un punteggio di similitudine. (es. ciao e ciar: per trasformare ciar in ciao occorre un solo cambiamento dell'utlima lettera quindi il punteggio di similitudine è 1, mentre se fossero uguali, ciao e ciao, il punteggio sarebbe 0). Ogni termine contenuto del database è collegato a una particolare voce, ad es. il termine "cd" è collegato alla voce "musica" oppure il termine "software" alla voce "informatica". Quello che l'applicazione dovrebbe fare è aumentare la precisione con cui, prelevato un nuovo termine, riesce ad indicarmi a quale voce assocerebbe il nuovo termine in base alla ricerca che ha svolto, precisione che dovrebbe aumentare man mano che aumenta il volume dei dati introdotti nel database. Quindi quello che vi chiedo è:avete un idea di come sia possibile fare in modo che diventi sempre più preciso e sicuro mano a mano che i dati nel database aumentano (ad es. se all'inizio sono presenti 20 termini nel database in base alla sua ricerca mi dice che secondo lui per il 10% la voce giusta è la A, per il 5% è la B, per il 3% la C e la D, per il 2% la E, la F e la G, mentre alla fine se sono presenti 200 termini è in grado di essere più sicuro quindi per l'80% la voce giusta è la D e per il 20% è la F)? Tenete conto del fatto che utilizzo la similitudine tra stringhe per la ricerca, perchè è probabile che i termini nel tempo si ripetano più volte e quindi un certo termine se nel database è associato a una certa voce allora è molto probabile che anche stavolta lo sia.
Spero di essere stata chiara.
Grazie, ciao a tutti!
Carlotta

Gluck74 Profilo | Guru

allora, vediamo se ho capito......

cd -> musica;
ld -> film;
mamma -> cucinare;
papà -> lavorare;
pc -> internet;

leggo da excel la voce dd, il software da questo punteggio:
cd=1, ld=1, pc=2, ecc..... ecc.....

quindi i termini probabili sono Musica e Film.
Tu vorresti assegnare la probabilità giusta a questi due termini.


mmm.... figo.....

io farei la somma di tutti i punteggi assegnati, quindi farei la "pesatura" dei punteggi per avere la percentuale.
Il fatto che i dati aumentano nel database, include automaticamente che le percentuali vengano più precise.
Infatti in questo caso succederebbe così:
esempio di punteggio totale = 22

Musica = 1/22
Film = 1/22
Internet = 2/22
ecc.. ecc...

quando aumentano i dati, il totale aumenta ma il punteggio rimane uguale
P.S.: naturalmente il punteggio lo devi rapportare a 100

spero di aver capito il problema

Carlotta87 Profilo | Newbie

Esatto, proprio così! In questi giorni ci ho lavorato un po' su ed effettivamente sono riuscita a fare più o meno come hai spiegato tu, però adesso dovrò mettermi lì e provare a vedere come si comporta inserendo i dati. Grazie!! ciao
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2025
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5