Beispiel #1
0
 /**
  * Parse result data into result objects
  *
  * @throws RuntimeException
  * @param  Query            $query
  * @param  QueryFacetSet    $facetSet
  * @param  array            $data
  * @return ResultFacetSet
  */
 public function parse($query, $facetSet, $data)
 {
     if ($facetSet->getExtractFromResponse() === true) {
         if (empty($data['facet_counts']) === false) {
             foreach ($data['facet_counts'] as $key => $facets) {
                 switch ($key) {
                     case 'facet_fields':
                         $method = 'createFacetField';
                         break;
                     case 'facet_queries':
                         $method = 'createFacetQuery';
                         break;
                     case 'facet_ranges':
                         $method = 'createFacetRange';
                         break;
                     case 'facet_pivot':
                         $method = 'createFacetPivot';
                         break;
                     default:
                         throw new RuntimeException('Unknown facet class identifier');
                 }
                 foreach ($facets as $k => $facet) {
                     $facetObject = $facetSet->{$method}($k);
                     if ($key == 'facet_pivot') {
                         /** @var \Solarium\QueryType\Select\Query\Component\Facet\Pivot $facetObject */
                         $facetObject->setFields($k);
                     }
                 }
             }
         }
     }
     $facets = array();
     foreach ($facetSet->getFacets() as $key => $facet) {
         switch ($facet->getType()) {
             case QueryFacetSet::FACET_FIELD:
                 $result = $this->facetField($query, $facet, $data);
                 break;
             case QueryFacetSet::FACET_QUERY:
                 $result = $this->facetQuery($facet, $data);
                 break;
             case QueryFacetSet::FACET_MULTIQUERY:
                 $result = $this->facetMultiQuery($facet, $data);
                 break;
             case QueryFacetSet::FACET_RANGE:
                 $result = $this->facetRange($query, $facet, $data);
                 break;
             case QueryFacetSet::FACET_PIVOT:
                 $result = $this->facetPivot($query, $facet, $data);
                 break;
             default:
                 throw new RuntimeException('Unknown facet type');
         }
         if ($result !== null) {
             $facets[$key] = $result;
         }
     }
     return $this->createFacetSet($facets);
 }
Beispiel #2
0
 public function testSetAndGetExtractFromResponse()
 {
     $this->facetSet->setExtractFromResponse(true);
     $this->assertEquals(true, $this->facetSet->getExtractFromResponse());
 }