Commit 52b21b5c authored by Bas de Nooijer's avatar Bas de Nooijer

Added query default operator and query default field settings

parent 275056b6
...@@ -62,6 +62,8 @@ class Solarium_Client_RequestBuilder_Select extends Solarium_Client_RequestBuild ...@@ -62,6 +62,8 @@ class Solarium_Client_RequestBuilder_Select extends Solarium_Client_RequestBuild
$request->addParam('rows', $query->getRows()); $request->addParam('rows', $query->getRows());
$request->addParam('fl', implode(',', $query->getFields())); $request->addParam('fl', implode(',', $query->getFields()));
$request->addParam('wt', 'json'); $request->addParam('wt', 'json');
$request->addParam('q.op', $query->getQueryDefaultOperator());
$request->addParam('df', $query->getQueryDefaultField());
// add sort fields to request // add sort fields to request
$sort = array(); $sort = array();
......
...@@ -59,6 +59,16 @@ class Solarium_Query_Select extends Solarium_Query ...@@ -59,6 +59,16 @@ class Solarium_Query_Select extends Solarium_Query
*/ */
const SORT_ASC = 'asc'; const SORT_ASC = 'asc';
/**
* Solr query operator AND
*/
const QUERY_OPERATOR_AND = 'AND';
/**
* Solr query operator OR
*/
const QUERY_OPERATOR_OR = 'OR';
/** /**
* Query component facetset * Query component facetset
*/ */
...@@ -266,6 +276,50 @@ class Solarium_Query_Select extends Solarium_Query ...@@ -266,6 +276,50 @@ class Solarium_Query_Select extends Solarium_Query
return $this->getOption('query'); return $this->getOption('query');
} }
/**
* Set default query operator
*
* Use one of the constants as value
*
* @param string $operator
* @return Solarium_Query_Select Provides fluent interface
*/
public function setQueryDefaultOperator($operator)
{
return $this->_setOption('querydefaultoperator', $operator);
}
/**
* Get the default query operator
*
* @return null|string
*/
public function getQueryDefaultOperator()
{
return $this->getOption('querydefaultoperator');
}
/**
* Set default query field
*
* @param string $field
* @return Solarium_Query_Select Provides fluent interface
*/
public function setQueryDefaultField($field)
{
return $this->_setOption('querydefaultfield', $field);
}
/**
* Get the default query field
*
* @return null|string
*/
public function getQueryDefaultField()
{
return $this->getOption('querydefaultfield');
}
/** /**
* Set the start offset * Set the start offset
* *
......
...@@ -89,6 +89,23 @@ class Solarium_Client_RequestBuilder_SelectTest extends PHPUnit_Framework_TestCa ...@@ -89,6 +89,23 @@ class Solarium_Client_RequestBuilder_SelectTest extends PHPUnit_Framework_TestCa
); );
} }
public function testSelectUrlWithQueryDefaultFieldAndOperator()
{
$this->_query->setQueryDefaultField('mydefault');
$this->_query->setQueryDefaultOperator(Solarium_Query_Select::QUERY_OPERATOR_AND);
$request = $this->_builder->build($this->_query);
$this->assertEquals(
null,
$request->getRawData()
);
$this->assertEquals(
'select?q=*:*&start=0&rows=10&fl=*,score&wt=json&q.op=AND&df=mydefault',
urldecode($request->getUri())
);
}
public function testSelectUrlWithSortAndFilters() public function testSelectUrlWithSortAndFilters()
{ {
$this->_query->addSort('id', Solarium_Query_Select::SORT_ASC); $this->_query->addSort('id', Solarium_Query_Select::SORT_ASC);
......
...@@ -32,6 +32,9 @@ ...@@ -32,6 +32,9 @@
class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase
{ {
/**
* @var Solarium_Query_Select
*/
protected $_query; protected $_query;
public function setUp() public function setUp()
...@@ -62,6 +65,22 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase ...@@ -62,6 +65,22 @@ class Solarium_Query_SelectTest extends PHPUnit_Framework_TestCase
$this->assertEquals('id:678', $this->_query->getQuery()); $this->assertEquals('id:678', $this->_query->getQuery());
} }
public function testSetAndGetQueryDefaultOperator()
{
$value = Solarium_Query_Select::QUERY_OPERATOR_AND;
$this->_query->setQueryDefaultOperator($value);
$this->assertEquals($value, $this->_query->getQueryDefaultOperator());
}
public function testSetAndGetQueryDefaultField()
{
$value = 'mydefault';
$this->_query->setQueryDefaultField($value);
$this->assertEquals($value, $this->_query->getQueryDefaultField());
}
public function testSetAndGetResultClass() public function testSetAndGetResultClass()
{ {
$this->_query->setResultClass('MyResult'); $this->_query->setResultClass('MyResult');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment