17 Dec

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! 🙂

2 thoughts on “Esempio con Fulltext Search con Mysql

  1. 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 ?

  2. 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…

Leave a Reply

Your email address will not be published. Required fields are marked *