Drupal, Articoli simili

Drupal, Articoli simili

Un funzionalità molto interessante di Drupal è sicuramente offerta dal modulo Similar Entries. Questo modulo per Drupal permette di visualizzare un elenco di nodi simili all'articolo correntemente visualizzato. Lo potete vedere in azione qui a fianco.

Questo può essere un modo molto semplice da installare ed è efficace per far aumentare il numero di pagine viste nel sito da parte dei visitatori. Spesso infatti i navigatori leggono una o al massimo due pagine e poi cambiano sito a meno che non trovino altri contenuti interessanti. Avere a disposizione un elenco di articoli simili a quello in cui ci si trova, ad esempio con approfondimenti o notizie correlate, fa aumentare l'interesse e quindi far rimanere le persone nel sito più a lungo con tutti gli ovvi vantaggi.

Le ricerche full-text in MySQL

Il funzionamento del modulo Similar Entries è basato su una ricerca full-text che viene effettuata cercando nel database di Drupal tutti i nodi il cui titolo e contenuto hanno la maggior corrispondenza con il nodo attivo.

In un database MySQL una semplice ricerca full-text si effettua usando la seguente sintassi:

SELECT * FROM tabella
WHERE MATCH (titolo,contenuto)
AGAINST ('stringa');

Nel caso specifico di Drupal, lo scopo è quello di identificare i nodi con il più alto tasso di somiglianza, pertanto la sintassi è leggermente differente:

SELECT nid, MATCH( title, body) AS punteggio
AGAINST ('stringa')
FROM ('node_revisions')
ORDER BY punteggio DESC;

In pratica si cerca la stringa nei campi specificati su MATCH(). Ad ogni nodo trovato l'interrogazione MySQL assegna un punteggio, più grande è il punteggio e maggiore sarà il grado di similitudine tra il contenuto del nodo e la stringa.

Questo sistema funziona molto bene in quanto estrae con esattezza i contenuti simili però ha qualche problemino a livello prestazionale. In siti con migliaia di articoli le query full-text su MySQL non sono molto veloci e se il numero di utenti è elevato questo potrebbe portare a dei rallentamenti significativi del sito web. Pertanto è consigliabile adottare un sistema di caching per ridurre il carico di lavoro nel database.