Newsgroup: it.comp.lang.visual-basic
Titolo: Implementare un motore di riceca

Salve a tutti.
Sto realizzando un programma che riceve un SMS tramite un modem GSM, e
interroga un database contenente degli articoli, elabora una risposta, e
invia l'SMS.
Per ora sto implementando la ricerca del prodotto specificato dall'utente.
Se l'utente manda un SMS con una sola parola chiave, effettuo una ricerca
con LIKE '%parolachiave%'.
In caso non trovo nulla, elimino l'ultimo carattere e effettuo nuovamente la
ricerca, così fino a quando la parola da lui inserita non rimane con 4
caratteri, sotto ai quali non scendo per evitare di ottenere troppi articoli
in risposta.
Nel caso in cui l'utente specifichi più di una parola chiave, effettuo una
ricerca con LIKE '%parolachiave1%' AND LIKE '%parolachiave2%' ... AND LIKE
'%parolachiaveN%', perchè il prodotto che lui cerca deve contenere tutte le
parole che lui ha specificato, altrimenti avrei troppe risposte possibili.
Non elimino gradualmente gli ultimi caratteri di ogni parola sempre per
evitare eccessive risposte.
Vengo alla domanda: come potrei implementare un motore di ricerca più
funzionale, soprattutto per il secondo caso (più parole chiave scelte)?
Intanto per ora ho pensato di eliminare le parole costituite da 1 o 2
lettere, perchè spesso sono articoli o congiunzioni che non fanno altro che
complicare la ricerca.
Il problema è che se l'utente richiede "cioccolata al latte" e il prodotto
invece si chiama "cioccolato al latte", con il metodo che uso io, non gli
restituisco nulla... se eliminassi "al" e gradualmente cancellassi gli
ultimi caratteri dalle due parole, otterrei però troppe risposte, come
"cioccolatini" e "latticini" e le centinaia di combinazioni possibili.
Purtroppo, dovendo rispondere tramite SMS non posso permettermi troppe
risposte, sia per una questione pratica , perchè già mandare una decina di
SMS solo a un singolo utente richiede un bel po' di tempo, che per una
questione economica. Inoltre non credo che l'utente sia disposto a vedersi
inondato il cellulare di SMS. Ho pensato di implementare un'opzione che
permetta all'utente, dopo aver ricevuto il primo SMS con le risposte, di
ricevere le seguenti, rimandando un altro SMS con un carattere speciale. Ciò
però implica una spesa ulteriore da parte dell'utente, e magari
un'incazzatura se, dopo il 3° SMS, non ha ancora ottenuto quello che vuole.
Su Google, per esempio, se specifico una ricerca del tipo "mela cotognu" mi
chiede se forse cercavo "mela cotogna" e mi dà i risultati per "mela
cotogna". Oppure se metto "amoretto saronnno" mi dice che non esiste e mi
propone i risultati relativi a "amaretto saronno". Come si implementa un
algoritmo del genere? Sia ben chiaro non chiedo il sorgente :) Vorrei almeno
qualche indicazione su dove potrei rivolgermi, un sito o un esempio. Sul
sito comune non c'è nulla, e su google se inserisco "motore di ricerca" mi
tira fuori i vari Virgilio, Arianna e company. E nemmeno "implementare
motore ricerca" o "creare motore ricerca" hanno dato risultati buoni.
So che non è semplice, ma vorrei implementare un motore funzionale, che non
restituisca un NO all'utente solo perchè mi ha scritto "cioccolatA" invece
di "cioccolatO", o se scrive "cioccolto" senza la "a"; ma non posso nemmeno
permettermi di ottenere troppe risposte, perchè non sto usando uno strumento
abbastanza "economico" come il web, ma gli SMS.
Vi ringrazio in anticipo.
Cordiali saulti,
Guido.

 web, ma gli SMS.
A novembre dicembre mi pare ci fosse stato un post simile , si trattava di
un cd interativo , prova con google "ricerca inteligente" o roba simile.
Cmq per curiosita' che soluzione hardware hai trovato per il modem GSM ?
circa 3-4 anni fa utilizzavo un costosissimo Siemens M20 (10 in parallelo
veramente) spero che i prezzi siano scesi sotto i 500Euro mantenendo
velocita' e efficienza !
-- 
<Gigio2K>
Sito Comune
Nokia -> I.T.H.N. -> 
http://www.ithn.it/
VB -> I.C.L.VB -> 
http://www.it-lang-vb.net/


Prova a guardare il sito dell wavecom. Stanno sotto i 200 euro.
Ciao, Giorgio

 velocita' e efficienza !
Per ora usiamo dei modem Falco GSM della Redco, il prezzo dovrebbe essere di
poco superiore ai 200 Euro.
Grazie ancora.

 algoritmo del genere? Sia ben chiaro non chiedo il sorgente :)
http://groups.google.com/groups?q=zanazzi+soundex&scoring=d
Bye, G.

Ti ringrazio infinitamente! :)
Ora me lo studio per bene. Grazie ancora :)

 Ora me lo studio per bene. Grazie ancora :)
Ti potrebbe esser utile anche "agrep" 
http://www.tgries.de/agrep/
E' un comando tipo il grep, ma che permette ricerche approssimate,
con la possibilità di specificare i limiti di errore (numero e posizione
dei caratteri diversi dalla stringa base, eccetera).
Alla sezione algoritmi ci sono vari link interessanti.
Bye, G.