Mysql offre una interessante funzionalità : la ricerca fulltext, con la quale è possibile creare un indice su più campi, quindi cercare velocemente i record che contengono le parole cercate nei records della tabella.
Esempio:
tabella prodotti di un negozio
creare indice con
ALTER TABLE prodotti ADD FULLTEXT(`nome`, `marca`,`descrizione`)
quindi eseguire le query così: (parola cercata: dolci)
SELECT *,MATCH(`nome`, `marca`,`descrizione`) AGAINST(’dolci’) as pmatch
FROM prodotti
WHERE MATCH(`nome`, `marca`,`descrizione`) AGAINST(’dolci’) > 0
ORDER BY pmatch DESC
Il risultato è una tabella con una colonna in più "pmatc", che contiene un numero indicante la pertinenza (più alto => più record che contenevano la parola).
In pratica MATCH(`nome`, `marca`,`descrizione`) AGAINST(’dolci’) restituisce un punteggio della parola rispetto ai campi del relativo record. E’ necessario ripeterla due volte nella query per problemi di visibilità della clausola where dentro la query.
Indicativamente la pertinenza corrisponde al numero di volte che la parola viene trovata nei campi dell’indice.
Attenzione: l’indice considera el parole per intero, quindi "dolci" o "dolc" NON trova nessun record che contiene "dolce", a differenza di una LIKE ‘%dolc%’



Leave a comment