MySQL, indici FullText e la lunghezza delle strighe

Avete mai provato a cercare su un indice FullText con una stringa sotto i 4 caratteri ?

select * from tabella where match (nomecampo) against (‘abc’);

Bhe, io dopo essere diventato scemo, ho scoperto che per default la lunghezza minima è impostata a 4 caratteri.

MySQL, indici FullText e ricerca sotto i 4 caratteri

Se quindi state cercando stringhe come “php“,”htm” o “css“, e nonostante siate sicuri che ci siano riscontri, la ricerca non vi restituisce nessun record, non è dovuto ad una tabella corrotta, ma molto più semplicemente perché l’indice in condizioni normali non gestisce ricerche di questo tipo.

La soluzione, se siete nelle condizioni di modificare il file di configurazione, fortunatamente c’è, e prevede 3 operazioni

  1. E’ necessario definire il valore della variabile ft_min_word_len all’interno del file my.cfg
    ft_min_word_len=3
  2. Riavviare il server in modo che valorizzi in modo corretto la nuova impostazione
  3. Per finire, è necessario fare il rebuild degli indici, in modo che vengano ricostruiti con tutte le informazioni corrette
    REPAIR TABLE nometabella QUICK;

Facile come bere un chupito… basta saperlo.

Per la documentazione ufficiale basta guardare qui

Maurizio Pelizzone

Maurizio Pelizzone

Sono Maurizio Pelizzone, sviluppatore WordPress da oltre vent'anni e consulente di intelligenza artificiale a Torino, co-fondatore di Mavida. Realizzo plugin e integrazioni su misura per WordPress e WooCommerce, automazioni dei processi con n8n e agenti AI, e tengo corsi e workshop su Claude Code, prompt engineering e vibe coding, in presenza a Torino o da remoto. Sono speaker ai WordCamp e autore della guida gratuita in italiano a Claude Code; se vuoi parlarmi di un progetto puoi prenotare una call conoscitiva.

3 commenti

  1. Ahhhhhhhhhhhhhhhh…. ora si spiegano moooolte cose… in effetti un dubbio l’avevo avuto ma non ho mai indagato in merito 🙂 Comunque grazie per l’utilissima dritta 🙂

Lascia una risposta

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *