2011-05-31 5 views
7

Estoy usando la funcionalidad de búsqueda ordinaria en mi controlador de negocio. pero ahora necesita implementar BÚSQUEDA DE TEXTO COMPLETO con paginación ¿alguien puede dar una idea o una muestra? estoy usando MySQL con tabes MyISAM¿BUSCAS UNA TEXTO COMPLETA en cakephp? cualquier ejemplo

y este mi estructura de la tabla, los campos marcados en negrita se tenga que utilizar en búsqueda

CREATE TABLE IF NOT EXISTS businesses ( 
    id bigint(20) unsigned NOT NULL AUTO_INCREMENT, 
    created date NOT NULL, 
    modified datetime NOT NULL, 
    user_id bigint(20) NOT NULL, 
    slug varchar(255) NOT NULL, 
    **`name` varchar(255) NOT NULL,** 
    **street_name varchar(255) DEFAULT NULL,** 
    **shopping_center varchar(255) DEFAULT NULL,** 
    state_id int(10) NOT NULL, 
    suburb_id int(10) NOT NULL, 
    zip_code varchar(12) DEFAULT NULL, 
    website varchar(250) DEFAULT NULL, 
    email varchar(255) DEFAULT NULL, 
    phone_no varchar(255) NOT NULL, 
    mobile_no varchar(255) DEFAULT NULL, 
    fax varchar(255) DEFAULT NULL, 
    is_active tinyint(1) NOT NULL DEFAULT '1', 
    PRIMARY KEY (id) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1; 

Respuesta

9

Después de tener created your FULLTEXT indices no es diferente en absoluto de las condiciones normales paginate, se solo necesita construir su SQL un poco más de forma manual y lo más importante escapar de la entrada de usuario manualmente.

$query = 'foobar'; // the user input to search for 
$escapedQuery = $this->Business->getDataSource()->value($query); 

$this->paginate['conditions'] = array("MATCH (Business.name) AGAINST ($escapedQuery)"); 
$businesses = $this->paginate(); 
+0

Si necesito usar varios campos como name y street_name y shopping_center ??? – AnNaMaLaI

+1

[Lea la documentación de 'MATCH ... AGAINST'] (http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html#function_match) y construya sus índices y consultas en consecuencia. – deceze

+0

Sí lo tengo. Gracias, encuentro una solución – AnNaMaLaI

Cuestiones relacionadas