Home
Home
Tutorials
   PHP
   Java
   Tutti...
Manuali
SmartImage
Marketing
Downloads
Contatti
Affiliati

  Da vedere
Hosting
Statistiche per siti
Corsi per webmaster
Hardware
Processori


  OnFocus
Array in JSON: come abilitarne l'uso

Quanti internauti ci sono in Italia? Quanti nel mondo?

Creare date casuali con MySql

  Siti Amici
Miki News
Giochi gratis
Areagratis
Baratto Online
AI Machines
Guide e Manuali Gratis
GoWebby
Aziende di trasporto
Blog in Mano
Abbassa la vista
Antivirus
Bigthink - idee dal web
Add to Technorati Favorites

Tutti i siti amici
Diventa Affiliato

 


Autore: Alessandro Coscia
Categoria: mysql
Livello: avanzato Livello avanzato

Far cercare parole corte a MySql Full-Text

Modificare il minimo numero di lettere per parole trovabili con MySql Full-Text

Le ricerche MySql Full-Text servono per cercare delle parole chiave fra le colonne di una tabella. Si usa Full-Text perchè è molto più veloce di LIKE ma non entreremo nel merito.

Perchè non trovo parole corte con Full-Text?
Per questioni di ottimizzazione delle prestazioni vengono cercate solo parole di almeno 4 lettere.

Posso risolvere il problema?
La soluzione per cercare parole più corte di 4 caratteri è modificare le configurazioni di MySql ma per fare ciò devi avere i permessi per modificarle. Per farla breve generalmente solo chi dispone di un server dedicato o virtuale può fare questa operazione.


Si, ho un server dedicato o virtuale, come procedo per la soluzione?
E' molto semplice ma ti consiglio di leggere bene tutto prima di iniziare.
Prima di tutto trova il tuo file di configurazioni con il comando (se sei su linux)
locate my.cnf

Di solito è in /etc/my.cnf o più probabilmente in /etc/mysql/my.cnf
Trovato il file è come sempre meglio farne una copia di backup
cd /etc/mysql
cp my
.cnf my.cnf_BackUp
Ora puoi modificare il file di configurazioni con il tuo editor preferito, per esempio vi
vi my.cnf

Cerca sotto la voce [mysqld] se è già presente la variabile ft_min_word_len.
Se esiste modifica il suo valore altrimenti aggiungila appena sotto [mysqld]
[mysqld]
ft_min_word_len 3

per esempio imposta Full-Text per cercare parole anche di 3 lettere. Ricorda che più diminuisci questo valore e più basse saranno le prestazioni.
Ora devi riavviare il server MySql
/etc/init.d/mysql restart

Infine devi ricostruire gli indici Full-Text, per esempio con un comando REPAIR
REPAIR TABLE tbl_name QUICK;

(Questa ultima operazione puoi farla anche da phpmyadmin).

Ora sarà possibile fare query anche con parole di 3 caratteri.

Nota importante:
Come specifica MySql il comando myisamchk utilizza le configurazioni di default e potrebbe provocare problemi ed anche query fallite dopo questa modifica.
Per risolvere questo problema ci sono due opzioni:
  1. Utilizzare sempre l'opzione ft_min_word_len via shell, per esempio:
    • shellmyisamchk --recover --ft_min_word_len=3 tbl_name.MYI
  2. Modificare il file di configurazione aggiungendo il parametro ft_min_word_len anche sotto la dicitura [myisamchk] con lo stesso lavore che in [mysqld]
Ovviamente la seconda opzione è fortemente consigliata. Lo stesso problema si propone con il motore isam nel caso in cui utilizzassi una vecchia versione di MySql.

Breve sitografia:
Spero che questa guida vi sia servita e vi sia stata chiara, non esitate a contattarci per problemi.
A presto!

Il mio timestamp MySql si aggiorna da solo, soluzioni Precedente Indice Successivo Backup di un database mysql command line, con compressione
Il mio timestamp MySql si aggiorna da solo, soluzioni Backup di un database mysql command line, con compressione