Press "Enter" to skip to content

CakePHP: come effettuare ricerche full text search

Oggi vedremo come eseguire una query di tipo full text search con CakePHP. La ricerca full text search, estremamente utile se stiamo progettando un motore di ricerca, ci offre diversi vantaggi rispetto a una libera ricerca effettuata con l’operatore LIKE.

Una ricerca con l’operatore LIKE si limita a rintracciare le occorrenze di una parola nel campo sottoposto alla ricerca.

Una ricerca full text individua le righe in cui, il campo sottoposto alla ricerca, mostra un’attinenza con la chiave di ricerca. La precisione è maggiore e le performance superiori.

La ricerca full text si basa su indici che possono essere creati solo su campi di testo (char, varchar, text) e per gli storage engine MyISAM e InnoDB (a partire dalla versione 5.6). La sintassi SQL è la seguente:

SELECT * FROM pages WHERE MATCH (title) AGAINST ('example page');

Con CakePHP procederemo nel seguente modo:

 
$q = "example page";
 
$this->paginate = array(
    'limit' => 10,
    'conditions' =>  array("MATCH(Page.title) AGAINST('$q' IN BOOLEAN MODE)")
);
 
$this->set('results', $this->paginate('Page'));

Se vuoi aggiornamenti futuri sulla ricerca di tipo full text e su CakePHP, seguimi via RSS o via email. Il box di iscrizione (gratuita ovviamente) è qui sotto 😉

Condividi l'articolo con i tuoi amici

Lascia un commento

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

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.