That will be a lot of findAlls... and LIKE is a db killer;) Also you would like to set recursive to -1 when searching. This is a little out of scope but some index optimization is a must in your solution http://www.databasejournal.com/features/mysql/article.php/1382791
I've did simple searches this way : http://wiki.kabturek.info/paginating_search_results Did you look at the more advanced solutions like Zend_Seach_Lucene ? The only downside is that it can't limit the number of results returned and can't paginate thru the results... I hope i don't get killes by publishing this link ;) http://www.symfony-project.com/askeet/en/21 It's a nice tutorial on building a search engine. Also there was a nice article in PHP Slutions about building a bitset search engine . If you're using PostgreSQL take a look at tsearch http://www.pgcon.org/2007/schedule/events/13.en.html I haven't looked at Xapian myself so aonly a link: http://www.xapian.org/ greets, Marcin Domanski aka kabturek On Aug 11, 8:31 pm, savagekabbage <[EMAIL PROTECTED]> wrote: > I wanted to incorporate a simple Global Record Search into my cart > (Selling Made Simple), and this is how I did it if anyone's wondering. > This example will basically allow you to search any model by any any > field depending on what you put in the database. > > This code is from Selling Made Simple and is released under the GPL. > If you see something that could be better about this code, please let > me know! > > 1 - Create a new model and database table, something like this is what > I used: > > CREATE TABLE `search_tables` ( > `id` int(10) NOT NULL auto_increment, > `model` varchar(50) NOT NULL, > `field` varchar(50) NOT NULL, > `url` varchar(50) NOT NULL, > `edit_field` varchar(50) NOT NULL, > `alternate_anchor` varchar(50) NOT NULL, > PRIMARY KEY (`id`) > ) > > 2 - Create a basic form that will post to your controller. Mine looks > something like this: > > echo $form->create('Search', array('action' => '/search/ > admin_global_search/', 'url' => '/search/admin_global_search/')); > echo $form->input('Search/term'); > echo $form->submit(); > echo $form->end(); > > 3 - My controller looks something like this: > > function admin_global_search () > { > $search_tables = $this->Search->findAll(); > $search_results = array(); > > foreach($search_tables AS $key => $table) > { > $search_results[$key] = array(); > loadModel($table['Search']['model']); > $this->SearchModel =& new $table['Search']['model'](); > > $search_conditions = $table['Search']['model'] . '.' . > $table['Search']['field'] . ' LIKE \'%' . $this->data['Search'] > ['term'] . '%\''; > > $search_results[$key] = > $this->SearchModel->findAll($search_conditions,null,null,20); > > } > > $this->set('tables',$search_tables); > $this->set('results',$search_results); > > $this->render('','admin'); > > } > > 4 - The view would of course just loop through the records and display > the data. I won't bother posting that here, since that's probably > dependent on your application and need. > > 5- Add models to search to your database. For example Selling Made > Simple has something like this: > > INSERT INTO `search_tables` (`id`, `model`, `field`, `url`, > `edit_field`, `alternate_anchor`) VALUES > (1, 'Content', 'alias', '/contents/admin_edit/', 'id', ''), > (2, 'Content', 'head_data', '/contents/admin_edit/', 'content_id', > ''), > (3, 'ContentDescription', 'name', '/contents/admin_edit/', > 'content_id', ''), > (4, 'ContentDescription', 'description', '/contents/admin_edit/', > 'content_id', 'name'), > (5, 'ContentLink', 'url', '/contents/admin_edit/', 'content_id', ''), > (6, 'Language', 'name', '/languages/admin_edit/', 'id', ''); > > ----------------------------- > Kevin Grandon > sellingmadesimple.org --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Cake PHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---