private function parseSearchQuery($searchQuery)
 {
     $parser = new Parser();
     // Handle a basic message search eg: 'foo bar'
     if ($parser->isSimpleLiteral($searchQuery)) {
         return array('message' => array('$regex' => $searchQuery));
     }
     // Handle a full query search eg: 'foo > bar'
     $compiler = new Compiler();
     try {
         return $compiler->compile($parser->parse($searchQuery));
     } catch (QueryParserException $e) {
         throw new InvalidSearchException(sprintf("Invalid search string '%s' near '%s'", $searchQuery, $e->getMessage()));
     } catch (LexingException $e) {
         throw new InvalidSearchException(sprintf("Invalid search string '%s' near '%s'", $searchQuery, $e->getMessage()));
     }
 }