Is there a hook or event we can use to intercept a search request? We are looking to log searches so we can report on them. Are there any hooks or events we can use to get this data?

If not, then how can a custom plugin log the initial search parameters, call the underlying core Craft search, and finally log the results?
We are looking to log searches so we can report on them. Are there any
  hooks or events we can use to get this data?


No, there aren't any hooks or events related to searching, currently (Craft 2.4). Like Brad says, you can add a feature request.


  [...] how can a custom plugin log the initial search parameters, call the
  underlying core Craft search, and finally log the results?


Something like this should work:

class MyPluginVariable
{

    public function search($query = '', ElementType $elementType = null)
    {

        MyPluginPlugin::log($query);

        $criteria = craft()-&gt;elements-&gt;getCriteria($elementType ?: ElementType::Entry);
        $criteria-&gt;search = $query;

        MyPluginPlugin::log(count($criteria));

        return $criteria;

    }

}


...and in the template:

{% set entries = craft.myPlugin.search('body:foo -body:bar') %}