Exemplo n.º 1
0
 public function testRemoveComponentWithObjectInput()
 {
     $mlt = new Solarium_Query_Select_Component_MoreLikeThis();
     $this->_query->setComponent('mlt', $mlt);
     $this->assertEquals(array('mlt' => $mlt), $this->_query->getComponents());
     $this->_query->removeComponent($mlt);
     $this->assertEquals(array(), $this->_query->getComponents());
 }
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;
 }
Exemplo n.º 3
0
 public function testConfigMode()
 {
     $config = array('query' => 'text:mykeyword', 'sort' => array('score' => 'asc'), 'fields' => array('id', 'title', 'category'), 'rows' => 100, 'start' => 200, 'filterquery' => array(array('key' => 'pub', 'tag' => array('pub'), 'query' => 'published:true'), 'online' => array('tag' => 'onl', 'query' => 'online:true')), 'component' => array('facetset' => array('facet' => array(array('type' => 'field', 'key' => 'categories', 'field' => 'category'), 'category13' => array('type' => 'query', 'query' => 'category:13')))), 'resultclass' => 'MyResultClass', 'documentclass' => 'MyDocumentClass');
     $query = new Solarium_Query_Select($config);
     $this->assertEquals($config['query'], $query->getQuery());
     $this->assertEquals($config['sort'], $query->getSorts());
     $this->assertEquals($config['fields'], $query->getFields());
     $this->assertEquals($config['rows'], $query->getRows());
     $this->assertEquals($config['start'], $query->getStart());
     $this->assertEquals($config['documentclass'], $query->getDocumentClass());
     $this->assertEquals($config['resultclass'], $query->getResultClass());
     $this->assertEquals('published:true', $query->getFilterQuery('pub')->getQuery());
     $this->assertEquals('online:true', $query->getFilterQuery('online')->getQuery());
     $facets = $query->getFacetSet()->getFacets();
     $this->assertEquals('category', $facets['categories']->getField());
     $this->assertEquals('category:13', $facets['category13']->getQuery());
     $components = $query->getComponents();
     $this->assertEquals(1, count($components));
     $this->assertThat(array_pop($components), $this->isInstanceOf('Solarium_Query_Select_Component_FacetSet'));
 }