Esempio con Fulltext Search con Mysql
Sto sviluppando una piccola applicazione web e ho avuto bisogno di utilizzare una ricerca libera nel Database Mysql . Ho provato varie funzioni (tipo Like e Rlike) ma non hanno generato i risultati in termini di performance che mi aspettavo.
Per questo motivo ho deciso di utilizzare la funzione FULLTEXT search di MySql. Dopo mille ricerche online sono riuscito finalmente a capire come fare.
Prima di tutto bisogna creare un indice sulla vostra tabella MySql (Ricorda che non funziona su Innodb).
L’indice si crea semplicemente cosi:
CREATE FULLTEXT INDEX IndiceRicerca ON lamia_tabella (ColonnnaUno(45),ColonnnaDue(65));
per effettuare la ricerca sulle colonne:
SELECT * FROM lamia_tabella WHERE MATCH (ColonnnaUno,ColonnnaDue) AGAINST (‘TermineDiRicerca’);
Ricordatatevi che le colonne devono essere Text o Varchar e che devono avere una lunghezza limitata (Ecco perchè ho usato ColonnnaUno(45)) altrimenti non funziona!
Se avete problemi commentate! 🙂
Purtroppo la ricerca FULL TEXT funziona solo (nella maggior parte dei server) con parole lunghe almeno 4 caratteri o 5.
Altro problema che ho rilevato, correggimi se sbaglio, se come stringa di ricerca uso più di una parola, allora il FULLTEXT non mi restituisce risultati.
Allora la domanda è questa : come si risolve il problema, visto che neanche con il LIKE si riescono a trovare risultati mettendo più parole ?
Si possono fare ricerche FULLTEXT con più parole aggiungedo dei parametri.
Qui un esempio: SELECT * FROM lamia_tabella WHERE MATCH (ColonnnaUno,ColonnnaDue) AGAINST (‘”termine 1″ “termine 2″‘ IN BOOLEAN MODE);
Prova e facci sapere…