Esempio n. 1
0
 /**
  * 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;
 }