There are some great add-ons available that make searching keywords within an index quick and easy. Each solution has its inherent strengths and weaknesses. But there comes a time though when you need to perform a query or search that isn't currently possible, and might be somewhat complex. Or in some instances, requiring very specific and custom URLs is needed by the client. What if you want to perform a proximity search with Google Maps, and keep the URL's pretty? What about searching photos by color in addition to that proximity search? If you are an add-on developer, what if you wanted to extend the search and easily customize the query before the search is ran?
Channel Search provides an elegant solution to a complicated problem by focussing on the API, which provides endless amounts of functionality and extendibility. Search rules are all created by extending the core Channel Search API, and each rule can do anything. There are a number of rules included out of the box, and developers are free to package these rules within their own add-ons. If an add-on is install that includes Channel Search rules, they will automatically appear in control panel. Best of all, Channel Search gives you full control of URLs by giving you a plethora of options, configurations, and template tags.
Real World Use Case
For example, Google Maps for ExpressionEngine and Photo Frame are both compatible with Channel Search. Each add-on that is compatible with Channel Search is inherently compatible. So lets say you want to create a private flickr.com style website. When your client uploads photos, they want the the meta location data to be saved. They want the most common colors of each photo automatically indexed. The client wants to tag the photosets with keywords and a title. So then on the front-end, they want to search photos by location, color, keywords, and title. Using Google Maps for EE, Photo Frame, and Channel Search, this is all possible by configuring a couple rules in the CP – it literally takes a couple minutes to setup. All the legwork is handled behind the scenes with the API. All queries cab be logged in the database so you can easily debug the logic of your queries, should you find yourself not getting the data you expect.