FAQ #50

Question: How do I implement a fulltext search? Answer: Pass the fulltext subquery as a conditions array element.
<?php

class SearchController extends AppController {
var $uses=array('Link');

function index(){
$this->set('title_for_layout',"Search results");
$query=(isset($this->data['Search']['q']))?$this->data['Search']['q']:'';
if(!$query) $query=(isset($this->params['url']['q']))?$this->params['url']['q']:'';
if(!$query){
$this->Session->setFlash(__("Invalid or empty search string",true));
}
else{
App::import('Sanitize');
$this->set('query',$query);
$query=Sanitize::escape($query);
$this->paginate = array(
'conditions' => array('Link.status'=>1,
"MATCH(Link.title,Link.description) AGAINST('$query' IN BOOLEAN MODE)"
),
'recursive'=>-1,
'limit'=>10,
);
$this->set('links', $this->paginate('Link'));
}

}


} //end of class
/*EOF*/
Warning:
The example above is insufficient to implement a real search function, as Cake's pagination functionality does not have built-in support for passing query strings to the next page. For such purposes, you need to add a bit of code to your view to make pagination work correctly. See the full search example in FAQ #51 (link below)
Add comment