ПОЛНЫЙ ТЕКСТ ПОИСК в cakephp? любой пример - PullRequest
7 голосов
/ 31 мая 2011

Я использую обычные функции поиска в моем бизнес-контроллере. но теперь нужно реализовать ПОЛНЫЙ ТЕКСТОВЫЙ ПОИСК с paginate кто-нибудь может дать идею или образец? Я использую MySQL с вкладками MyISAM

и это моя структура таблицы, поля, выделенные жирным шрифтом, необходимо использовать в поиск

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; 

1 Ответ

9 голосов
/ 31 мая 2011

После того, как вы создали свои FULLTEXT индексы , они ничем не отличаются от обычных условий разбивки на страницы, вам просто нужно создать свой SQL немного больше вручную и, самое главное, экранировать пользовательский ввод вручную.

$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();
...