/**
  * Parse result data into result objects
  *
  * @param Solarium_Query_Select $query
  * @param Solarium_Query_Select_Component_FacetSet $facetSet
  * @param array $data
  * @return Solarium_Result_Select_FacetSet
  */
 public function parse($query, $facetSet, $data)
 {
     $facets = array();
     foreach ($facetSet->getFacets() as $key => $facet) {
         switch ($facet->getType()) {
             case Solarium_Query_Select_Component_FacetSet::FACET_FIELD:
                 $result = $this->_facetField($facet, $data);
                 break;
             case Solarium_Query_Select_Component_FacetSet::FACET_QUERY:
                 $result = $this->_facetQuery($facet, $data);
                 break;
             case Solarium_Query_Select_Component_FacetSet::FACET_MULTIQUERY:
                 $result = $this->_facetMultiQuery($facet, $data);
                 break;
             case Solarium_Query_Select_Component_FacetSet::FACET_RANGE:
                 $result = $this->_facetRange($facet, $data);
                 break;
             default:
                 throw new Solarium_Exception('Unknown facet type');
         }
         if ($result !== null) {
             $facets[$key] = $result;
         }
     }
     return $this->_createFacetSet($facets);
 }
Example #2
0
 /**
  * Add request settings for FacetSet
  *
  * @param Solarium_Query_Select_Component_FacetSet $component
  * @param Solarium_Client_Request $request
  * @return Solarium_Client_Request
  */
 public function buildComponent($component, $request)
 {
     $facets = $component->getFacets();
     if (count($facets) !== 0) {
         // enable faceting
         $request->addParam('facet', 'true');
         // global facet params
         $request->addParam('facet.sort', $component->getSort());
         $request->addParam('facet.prefix', $component->getPrefix());
         $request->addParam('facet.missing', $component->getMissing());
         $request->addParam('facet.mincount', $component->getMinCount());
         $request->addParam('facet.limit', $component->getLimit());
         foreach ($facets as $facet) {
             switch ($facet->getType()) {
                 case Solarium_Query_Select_Component_FacetSet::FACET_FIELD:
                     $this->addFacetField($request, $facet);
                     break;
                 case Solarium_Query_Select_Component_FacetSet::FACET_QUERY:
                     $this->addFacetQuery($request, $facet);
                     break;
                 case Solarium_Query_Select_Component_FacetSet::FACET_MULTIQUERY:
                     $this->addFacetMultiQuery($request, $facet);
                     break;
                 case Solarium_Query_Select_Component_FacetSet::FACET_RANGE:
                     $this->addFacetRange($request, $facet);
                     break;
                 default:
                     throw new Solarium_Exception('Unknown facet type');
             }
         }
     }
     return $request;
 }
Example #3
0
 public function testCreateFacetWithInvalidType()
 {
     $this->setExpectedException('Solarium_Exception');
     $this->_facetSet->createFacet('invalidtype');
 }