Commit 7bd3bc1a authored by Bas de Nooijer's avatar Bas de Nooijer

Merge pull request #371 from basdenooijer/thomascorthals-develop

Added support for facet.contains and facet.contains.ignoreCase
parents cf4843c6 9ecbb7df
......@@ -157,9 +157,58 @@ class Field extends AbstractFacet
}
/**
* Set the facet limit.
* Limit the terms for faceting by a string they must contain
*
* @param int $limit
* This is a global value for all facets in this facetset
*
* @param string $contains
* @return self Provides fluent interface
*/
public function setContains($contains)
{
return $this->setOption('contains', $contains);
}
/**
* Get the facet contains
*
* This is a global value for all facets in this facetset
*
* @return string
*/
public function getContains()
{
return $this->getOption('contains');
}
/**
* Case sensitivity of matching string that facet terms must contain
*
* This is a global value for all facets in this facetset
*
* @param boolean $containsIgnoreCase
* @return self Provides fluent interface
*/
public function setContainsIgnoreCase($containsIgnoreCase)
{
return $this->setOption('containsignorecase', $containsIgnoreCase);
}
/**
* Get the case sensitivity of facet contains
*
* This is a global value for all facets in this facetset
*
* @return boolean
*/
public function getContainsIgnoreCase()
{
return $this->getOption('containsignorecase');
}
/**
* Set the facet limit
*
* @return self Provides fluent interface
*/
......
......@@ -192,7 +192,58 @@ class FacetSet extends AbstractComponent
}
/**
* Set the facet sort order.
* Limit the terms for faceting by a string they must contain
*
* This is a global value for all facets in this facetset
*
* @param string $contains
* @return self Provides fluent interface
*/
public function setContains($contains)
{
return $this->setOption('contains', $contains);
}
/**
* Get the facet contains
*
* This is a global value for all facets in this facetset
*
* @return string
*/
public function getContains()
{
return $this->getOption('contains');
}
/**
* Case sensitivity of matching string that facet terms must contain
*
* This is a global value for all facets in this facetset
*
* @param boolean $containsIgnoreCase
* @return self Provides fluent interface
*/
public function setContainsIgnoreCase($containsIgnoreCase)
{
return $this->setOption('containsignorecase', $containsIgnoreCase);
}
/**
* Get the case sensitivity of facet contains
*
* This is a global value for all facets in this facetset
*
* @return boolean
*/
public function getContainsIgnoreCase()
{
return $this->getOption('containsignorecase');
}
/**
* Set the facet sort order
*
* Use one of the SORT_* constants as the value
*
......
......@@ -76,6 +76,8 @@ class FacetSet extends RequestBuilder implements ComponentRequestBuilderInterfac
// global facet params
$request->addParam('facet.sort', $component->getSort());
$request->addParam('facet.prefix', $component->getPrefix());
$request->addParam('facet.contains', $component->getContains());
$request->addParam('facet.contains.ignoreCase', is_null($ignoreCase = $component->getContainsIgnoreCase()) ? null : ($ignoreCase ? 'true' : 'false'));
$request->addParam('facet.missing', $component->getMissing());
$request->addParam('facet.mincount', $component->getMinCount());
$request->addParam('facet.limit', $component->getLimit());
......@@ -130,6 +132,8 @@ class FacetSet extends RequestBuilder implements ComponentRequestBuilderInterfac
$request->addParam("f.$field.facet.limit", $facet->getLimit());
$request->addParam("f.$field.facet.sort", $facet->getSort());
$request->addParam("f.$field.facet.prefix", $facet->getPrefix());
$request->addParam("f.$field.facet.contains", $facet->getContains());
$request->addParam("f.$field.facet.contains.ignoreCase", is_null($ignoreCase = $facet->getContainsIgnoreCase()) ? null : ($ignoreCase ? 'true' : 'false'));
$request->addParam("f.$field.facet.offset", $facet->getOffset());
$request->addParam("f.$field.facet.mincount", $facet->getMinCount());
$request->addParam("f.$field.facet.missing", $facet->getMissing());
......
......@@ -58,6 +58,8 @@ class FieldTest extends \PHPUnit_Framework_TestCase
'mincount' => 5,
'missing' => true,
'method' => 'enum',
'contains' => 'foobar',
'containsignorecase' => true,
);
$this->facet->setOptions($options);
......@@ -71,6 +73,8 @@ class FieldTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($options['mincount'], $this->facet->getMinCount());
$this->assertEquals($options['missing'], $this->facet->getMissing());
$this->assertEquals($options['method'], $this->facet->getMethod());
$this->assertEquals($options['contains'], $this->facet->getContains());
$this->assertEquals($options['containsignorecase'], $this->facet->getContainsIgnoreCase());
}
public function testGetType()
......@@ -128,4 +132,16 @@ class FieldTest extends \PHPUnit_Framework_TestCase
$this->facet->setMethod('enum');
$this->assertEquals('enum', $this->facet->getMethod());
}
public function testSetAndGetContains()
{
$this->facet->setContains('foobar');
$this->assertEquals('foobar', $this->facet->getContains());
}
public function testSetAndGetContainsIgnoreCase()
{
$this->facet->setContainsIgnoreCase(true);
$this->assertEquals(true, $this->facet->getContainsIgnoreCase());
}
}
......@@ -59,6 +59,8 @@ class FacetSetTest extends \PHPUnit_Framework_TestCase
'mincount' => 10,
'missing' => 5,
'extractfromresponse' => true,
'contains' => 'foobar',
'containsignorecase' => true,
);
$this->facetSet->setOptions($options);
......@@ -70,6 +72,8 @@ class FacetSetTest extends \PHPUnit_Framework_TestCase
$this->assertEquals($options['mincount'], $this->facetSet->getMincount());
$this->assertEquals($options['missing'], $this->facetSet->getMissing());
$this->assertEquals($options['extractfromresponse'], $this->facetSet->getExtractFromResponse());
$this->assertEquals($options['contains'], $this->facetSet->getContains());
$this->assertEquals($options['containsignorecase'], $this->facetSet->getContainsIgnoreCase());
}
public function testGetType()
......
......@@ -232,6 +232,33 @@ class FacetSetTest extends \PHPUnit_Framework_TestCase
urldecode($request->getUri())
);
}
public function testBuildWithContainsSettings()
{
$facet = new FacetField(
array(
'key' => 'f1',
'field' => 'owner',
'contains' => 'foo',
'containsignorecase' => true,
)
);
$this->component->addFacet($facet);
$this->component->setContains('bar');
$this->component->setContainsIgnoreCase(false);
$request = $this->builder->buildComponent($this->component, $this->request);
$this->assertEquals(
null,
$request->getRawData()
);
$this->assertEquals(
'?facet=true&facet.contains=bar&facet.contains.ignoreCase=false&facet.field={!key=f1}owner&f.owner.facet.contains=foo&f.owner.facet.contains.ignoreCase=true',
urldecode($request->getUri())
);
}
}
class UnknownFacet extends FacetField
......
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