Sinceramente non so se sono in grado di aiutarti.
Così come hai impostato la ricerca non penso possa fare molto per migliorare la situazione. Infatti avevo pensato che al limite potresti imporre che la parola da ricercare deve avere minimo un tot. di caratteri, ma non penso sia una cosa sensata.
Se il nome del prodotto è composto da una sola parola allora al posto di LIKE usa =
Nel caso in cui il nome del prodotto sia composto da + parole mi è venuta un'idea. Te la butto lì, non so se può esserti utile.
Io farei in tal modo. Anziché fare la ricerca sulla tabella prodotti, mi creerei una tabella di appoggio che contenga tutte le parole possibili da ricercare. Mi spiego meglio.
Supponiamo che la tabella prodotti contenga i seguenti campi:
id_prodotto nome descrizione ...........
io creerei la tabella parole con i campi:
parola id_prodotto
con ambedue i campi chiave primaria ed una relazione esterna tra id_prodotto della tabella prodotti e id_prodotto della tabella parole.
Ogni qualvolta inserisci un nuovo prodotto prendi tutte le parole differenti di cui si compone il nome del prodotto e mettile nella tabella parole tenendo traccia per ogni parola del prodotto a cui fanno riferimento.
Es: nome prodotto: Video LCD Samsung
inseriamo il prodotto nella tabella prodotti, la quale ti restituisce come id_prodotto 50 (sto supponendo che id_prodotto sia di tipo autoincrement).
A questo punto inserisci nella tabella parole i 3 record:
Video 50
LCD 50
Samsung 50
In tal modo quando devi fare una ricerca la fai sulla tabella parole e non usando LIKE ma =, cioè:
$search = mysql_query("SELECT * FROM parole WHERE parola=$term" );
Potresti osservare: bastava fare la seguente ricerca su prodotti
$search = mysql_query("SELECT * FROM parole WHERE LOCATE($term, nome)<>0");
così ci si risparmiava la tabella parole.
Il problema, però, è che il comando LOCATE o simili trovano la prima occorrenza di $term nel campo nome.
Quindi se $term = 'c';
la ricerca dà esito positivo anche per Cloro, Carburante........
Non so se ti sono stato di aiuto.
CIAO.

Rispondi quotando