/** * 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; }
public function testSetAndGetQueryDefaultField() { $value = 'mydefault'; $this->_query->setQueryDefaultField($value); $this->assertEquals($value, $this->_query->getQueryDefaultField()); }