Пример #1
0
 /**
  * Add a facetquery
  *
  * Supports a facetquery instance or a config array, in that case a new
  * facetquery instance wil be created based on the options.
  *
  * @param Solarium_Query_Select_Component_Facet_Query|array $facetQuery
  * @return Solarium_Query_Select_Component_Facet_MultiQuery Provides fluent interface
  */
 public function addQuery($facetQuery)
 {
     if (is_array($facetQuery)) {
         $facetQuery = new Solarium_Query_Select_Component_Facet_Query($facetQuery);
     }
     $key = $facetQuery->getKey();
     if (0 === strlen($key)) {
         throw new Solarium_Exception('A facetquery must have a key value');
     }
     if (array_key_exists($key, $this->_facetQueries)) {
         throw new Solarium_Exception('A query must have a unique key' . ' value within a multiquery facet');
     }
     // forward shared excludes
     $facetQuery->addExcludes($this->getExcludes());
     $this->_facetQueries[$key] = $facetQuery;
     return $this;
 }
Пример #2
0
 public function testAddQueriesWithConfig()
 {
     $facetQuery1 = new Solarium_Query_Select_Component_Facet_Query();
     $facetQuery1->setKey('k1');
     $facetQuery1->setQuery('category:1');
     $facetQuery1->addExcludes(array('fq1', 'fq2'));
     $facetQuery2 = new Solarium_Query_Select_Component_Facet_Query();
     $facetQuery2->setKey('k2');
     $facetQuery2->setQuery('category:2');
     $facetQueries = array('k1' => $facetQuery1, 'k2' => $facetQuery2);
     $config = array(array('key' => 'k1', 'query' => 'category:1', 'exclude' => array('fq1', 'fq2')), 'k2' => array('query' => 'category:2'));
     $this->_facet->addQueries($config);
     $this->assertEquals($facetQueries, $this->_facet->getQueries());
 }