Supporto volontario e collaborativo per Joomla!® in italiano

Notizie

Tutte le ultime notizie su Joomla! in Italia

Ricerche Full text per un buon hosting Joomla!

In evidenzaRecentemente Brian Teeman ha pubblicato nel suo blog un interessante articolo dal titolo "K2 and Why you need a good Joomla Web Host" dove prende in esame un settaggio di MySQL, che in server non ben configurati, può influire negativamente nei moduli di ricerca di alcune estensioni per Joomla. Il nostro partner tecnico Joomlahost ci spiega come verificare il valore di questo parametro specificando che sui propri server viene impostato correttamente...

QueryAlcune estensioni esterne per Joomla, come K2 che utilizziamo su Joomla.it nella sezione dei download della community, utilizzano il metodo BOOLEAN per i loro moduli di ricerca a differenza di Joomla che utilizza la più classica query LIKE per interrogare il database. Accade però che la configurazione di default per le ricerche con il metodo BOOLEAN sia impostata su un limite di 4 caratteri, impedendo così di utilizzare chiavi di ricerca molto utili come ACL o SEF o URL ecc...
Il parametro MySQL in questione è ft_min_word_len che preferibilmente (come su Joomlahost) deve essere impostato su 3 e non lasciato al valore di default 4.


E' possibile verificare questo valore dal phpmyadmin del proprio spazio web. Nella sezione SQL inserire questo comando:
SHOW VARIABLES LIKE 'ft%'


Nel risultato mostrato da phpmyadmin è possibile verificare il valore impostato per ft_min_word_len

Se nel vostro spazio web questo valore è ancora impostato su 4 è necessario agire sulla configurazione del server che necessiterà di essere riavviato per poi ricostruire gli indici delle tabelle FULL TEXT.

Mysql 5.X permette di usare, con le tabelle di tipologia MyIsam dalla ver 3.23 in poi, le ricerche Full Text, ovvero ricerche delle parole nei campi di testo (CHAR, VARCHAR, TEXT).

Ma come mai usare questa tipologia particolare di ricerca invece di quella normale ?

Per ricercare una parola in un campo di testo nekl linguaggio SQL, possiamo utilizzare il comando nomecampo LIKE '%parola%' ma la ricerca full-text possiede numerosi vantaggi:  per prima cosa è migliore a livello di prestazioni (consente ricerche più veloci), e poi consente ricerche molto precise ordinando anche i risultati in base al grado di attinenza con la ricerca, in parole povere da un peso ai risultati.
Per comprendere meglio l'utilità della ricerca full-text proviamo a pensare a Google.
Quando si effettua una ricerca con Google i risultati vengono mostrati in base al grado di attinenza con la parola cercata.
Questo è proprio quello che la ricerca full-text permette di fare.
A livelli più sofisticati, possiamo anche specificare di ricercare i documenti dove sono presenti alcune parole ma non altre, chiamate Ricerche Boolean Full-Text che utilizzano i caratteri tipo +,- per ottenere il risultato desiderato.
Di contro, per poterla utilizzare bisogna creare degli indici specifici sulle nostre tabelle, che non potranno essere utilizzati per nessun altro tipo di ricerca.

Il componente K2 di Joomla ci permette di utilizzare questa caratteristica per trovare in quali pagine / documenti nel nostro sito è presente una determinata parola.
Per poterlo fare vengono utilizzati su una tabella interna, jos_k2_items, 2 indici FULL TEXT che possiamo esaminare con PhpMyAdmin nella parte Struttura / Dettagli
dove ne vediamo la struttura.

Per poter ricostruire i 2 indici possiamo utilizzare i comandi SQL nella parte "SQL" di PhpMyAdmin. :

DROP INDEX `search` ON `jos_k2_items`; 
ALTER TABLE `jos_k2_items` ADD FULLTEXT `search` 
(`title`,`introtext`,`fulltext`,`extra_fields_search`,`image_caption`,`image_credits`,
`video_caption`,`video_credits`,`metadesc`,`metakey`); 

DROP INDEX `title` ON `jos_k2_items`; 
ALTER TABLE `jos_k2_items` ADD FULLTEXT `title` (`title`); 


Per le ricerche Full Text sono anche presenti soluzioni Open Source come processi esterni a Mysql, che interagendo con quest'ultimo, ne potenziano le caratteristiche sia come prestazioni che come flessibilità (tipo voglio che la parola Cane sia trattata come Cani, voglio che una determinata parola NON sia indicizzata, etc).

Alessandro Fustini di Joomlahost