/** * Get result data for the response * * @param Solarium_Result_Select $result * @return array */ public function parse($result) { $data = $result->getData(); $query = $result->getQuery(); // create document instances $documentClass = $query->getOption('documentclass'); $documents = array(); if (isset($data['response']['docs'])) { foreach ($data['response']['docs'] as $doc) { $fields = (array) $doc; $documents[] = new $documentClass($fields); } } // component results $components = array(); $types = $query->getComponentTypes(); foreach ($query->getComponents() as $component) { $componentParserClass = $types[$component->getType()]['responseparser']; if (!empty($componentParserClass)) { $componentParser = new $componentParserClass(); $components[$component->getType()] = $componentParser->parse($query, $component, $data); } } return array('status' => $data['responseHeader']['status'], 'queryTime' => $data['responseHeader']['QTime'], 'numfound' => $data['response']['numFound'], 'documents' => $documents, 'components' => $components); }