/** * 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); }
/** * Fetch the next set of results * * @return void */ protected function _fetchNext() { $this->_query->setStart($this->_start)->setRows($this->getPrefetch()); $this->_result = $this->_client->execute($this->_query); $this->_documents = $this->_result->getDocuments(); $this->_start += $this->getPrefetch(); }
public function testGetQueryTime() { $this->assertEquals(12, $this->_result->getQueryTime()); }
/** * We use this to iterate over groupings and created nested search result sets. * @param Solarium_Result_Select $result * @param WikiaSearchConfig $searchConfig * @return WikiaSearchResultSet provides fluent interface */ private function setResultGroupings(Solarium_Result_Select $result, WikiaSearchConfig $searchConfig) { wfProfileIn(__METHOD__); $fieldGroup = $result->getGrouping()->getGroup('host'); $metaposition = 0; foreach ($fieldGroup->getValueGroups() as $valueGroup) { $resultSet = F::build('WikiaSearchResultSet', array($result, $searchConfig, $this, $metaposition++)); $this->results[$resultSet->getHeader('cityUrl')] = $resultSet; } wfProfileOut(__METHOD__); return $this; }
/** * @desc Returns first document from results set * * @param Solarium_Result_Select $resultSet * @return null */ private function getFirstResult($resultSet) { if ($resultSet->getNumFound()) { foreach ($resultSet as $document) { return $document; } } return null; }