MySQL e le ricerche FULL TEXT

05/09/2006

Uno dei vantaggi nell'utilizzo dei database per l'allocazione dei dati è quello di poter effettuare delle ricerche all'interno delle informazioni memorizzate. Nel caso particolare delle ricerche testuali, MySQL mette a disposizione un'avanzata metodologia di ricerca chiamata FULL TEXT che permette di ottenere risultati scelti sulla base della pertinenza tra chiave di ricerca e contenuti.

L'operatore LIKE, utilizzatissimo per le interrogazioni di ricerca testuale, si limita esclusivamente a reperire all'interno dei dati allocati la stringa passata come parametro di input; la metodologia FULL TEXT invece, effettua un confronto tra i diversi contenuti restituendo prioritariamente quello dotato dello SCORE (livello di pertinenza) più elevato.

La possibilità di effettuare ricerche FULL TEXT in un database MySQL è stata introdotta per la prima volta con la versione 3.23.23. del DBMS, ma soltanto a partire dalla 4.1 questa opzione è stata implementata del tutto e resa utilizzabile senza particolari interventi di amministrazione.

Alla base dei comportamenti di MySQL nelle ricerche FULL TEXT vi sono 5 variabili:

  1. ft_boolean_syntax: operatore per le ricerche di tipo logico/booleano.
  2. ft_max_word_len: dimensione massima delle singole stringhe indicizzate (valore predefinito a 254 char).
  3. ft_min_word_len: dimensione minima delle singole stringhe indicizzate (valore predefinito 4 char).
  4. ft_max_word_len_for_sort: dimensione massima delle stringhe indicizzabili nelle operazioni di ricostruzione dell'indice.
  5. ft_stopword_file: riferimento al file che contiene i nomi e i tipi di stringhe che non devono essere sottoposti ad indicizzazione.
Tutti i parametri riferiti a queste variabili sono suscettibili di modifiche; sarà per esempio possibile intervenire sul file fulltext.h modificando il valore relativo alla lunghezza massima delle stringhe indicizzate:
#define HA_FT_MAXLEN 254
Potremo inoltre modificare il file ft_static.c per aggiungere stringhe alla lista di quelle già escluse dall'indicizzazione:
#ifdef COMPILE_STOPWORDS_IN
 "parola",
 "altra parola",
#endif
Gli interventi sulle variabili possono però necessitare la ricostruzione degli indici FULL TEXT, a questo scopo sarà possibile eliminare l'indice per poi ricrearlo con il noto comando REPAIR TABLE seguito dal nome della tabella interessata.

Attenzione: questo articolo è stato concesso in esclusiva per la pubblicazione a Mrwebmaster.it; ne è vietata la riproduzione,
anche parziale, senza l'esplicito consenso dell'autore e della redazione di Mrwebmaster.it.

© Claudiogarau.it :: Tutorials & Scripts, PHP, Linux and more.

Stampa :: Torna alla Home