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()); }
/** * 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; }