Well, if you were to use a component to run searches, getting it to connect to the database would be tricky. You'd have to add something like
App::import('Model',array('table 1','table2'));
$table_1 = new Table1();
$table_2 = new Table2();
to get the model classes in the component. Then, from there you'd have to run your find methods with these model objects in the component, something like
$set = $table_1->find('all',array('conditions'=>array('name'=>$query)));
But, here's the problem... You have to manually supply the names of the individual models. This, right off the bat, is the red light that discourages me from using a component to run searches across the database. See, the component is supposed to be portable. This doesn't mean that all of its methods have to be extremely generic, but in general, the component ought to be "installable" in any Cake application, and with minor configurations, still work.
True, you could supply properties that would store the model names, and then have the controller manually provide the names of the models in some fashion, but you can see that all of this is being done without the model. And as a rule, all database interactions ought to be done in the model. This better encapsulates the class objects to have them perform their fundamental operations, and the component is mainly designed to handle portable business logic, not data handling like the model. Not to mention the Cake dev team encouraging developers to leave the database totally out of the component.
Or, here's another scenario... Suppose you use the App Model to run searches across the different models. You could build a
search() function in the App Model that any of the models could use. This function would perform the same query, the only thing that would change would be the child model calling for the search. Or, if indexing is your thing, then my initial thought is that this would be best accomplished with a behavior. (For lack of time, I'll just encourage you at this point to check out Chapter 14 on DataSources and Behaviors; also check out my chapter on Components and Utilities for a discussion on when to use components.)
These are my first thoughts, but admittedly, you're touching on a very technically demanding topic. Heck, Google has made billions with their own forays into search methods; I wouldn't presume to know everything about how to better index your site's database and search it, but I would say that to only do this in a controller is likely going to worsen the order of the app's structure.