Exemplo n.º 1
0
 public function testSetFilterQueries()
 {
     $fq1 = new Solarium_Query_Select_FilterQuery();
     $fq1->setKey('fq1')->setQuery('category:1');
     $fq2 = new Solarium_Query_Select_FilterQuery();
     $fq2->setKey('fq2')->setQuery('category:2');
     $filterQueries1 = array('fq1' => $fq1, 'fq2' => $fq2);
     $this->_query->addFilterQueries($filterQueries1);
     $fq3 = new Solarium_Query_Select_FilterQuery();
     $fq3->setKey('fq3')->setQuery('category:3');
     $fq4 = new Solarium_Query_Select_FilterQuery();
     $fq4->setKey('fq4')->setQuery('category:4');
     $filterQueries2 = array('fq3' => $fq3, 'fq4' => $fq4);
     $this->_query->setFilterQueries($filterQueries2);
     $this->assertEquals($filterQueries2, $this->_query->getFilterQueries());
 }
Exemplo n.º 2
0
 /**
  * Build request for a select query
  *
  * @param Solarium_Query_Select $query
  * @return Solarium_Client_Request
  */
 public function build($query)
 {
     $request = new Solarium_Client_Request();
     $request->setHandler($query->getHandler());
     // add basic params to request
     $request->addParam('q', $query->getQuery());
     $request->addParam('start', $query->getStart());
     $request->addParam('rows', $query->getRows());
     $request->addParam('fl', implode(',', $query->getFields()));
     $request->addParam('wt', 'json');
     $request->addParam('q.op', $query->getQueryDefaultOperator());
     $request->addParam('df', $query->getQueryDefaultField());
     // add sort fields to request
     $sort = array();
     foreach ($query->getSorts() as $field => $order) {
         $sort[] = $field . ' ' . $order;
     }
     if (count($sort) !== 0) {
         $request->addParam('sort', implode(',', $sort));
     }
     // add filterqueries to request
     $filterQueries = $query->getFilterQueries();
     if (count($filterQueries) !== 0) {
         foreach ($filterQueries as $filterQuery) {
             $fq = $this->renderLocalParams($filterQuery->getQuery(), array('tag' => $filterQuery->getTags()));
             $request->addParam('fq', $fq);
         }
     }
     // add components to request
     $types = $query->getComponentTypes();
     foreach ($query->getComponents() as $component) {
         $componentBuilderClass = $types[$component->getType()]['requestbuilder'];
         if (!empty($componentBuilderClass)) {
             $componentBuilder = new $componentBuilderClass();
             $request = $componentBuilder->build($component, $request);
         }
     }
     return $request;
 }