Commit ab622091 authored by Dorian Villet's avatar Dorian Villet

Merge remote-tracking branch 'mainrepo/develop' into fix-document-typehint

Conflicts:
	library/Solarium/QueryType/Analysis/Query/Document.php
parents 0f7c94c5 14c6c16f
......@@ -15,6 +15,9 @@
"php": ">=5.3.2",
"symfony/event-dispatcher": "~2.1"
},
"require-dev": {
"phpunit/phpunit": "~3.7"
},
"autoload": {
"psr-0": { "Solarium\\": "library/" }
}
......
......@@ -222,7 +222,7 @@ class Curl extends Configurable implements AdapterInterface
* @throws HttpException
* @param string $data
* @param array $headers
* @param Curl handle $handle
* @param resource $handle
* @return void
*/
public function check($data, $headers, $handle)
......
......@@ -135,7 +135,8 @@ class PeclHttp extends Configurable implements AdapterInterface
* @throws InvalidArgumentException
* @param Request $request
* @param Endpoint $endpoint
* @param HttpRequest
* @param HttpRequest
* @return \HttpRequest
*/
public function toHttpRequest($request, $endpoint)
{
......
......@@ -161,6 +161,7 @@ class ZendHttp extends Configurable implements AdapterInterface
* Execute a Solr request using the Zend_Http_Client instance
*
* @throws HttpException
* @throws OutOfBoundsException
* @param Request $request
* @param Endpoint $endpoint
* @return Response
......@@ -210,6 +211,7 @@ class ZendHttp extends Configurable implements AdapterInterface
* Prepare a solarium response from the given request and client
* response
*
* @throws HttpException
* @param Request $request
* @param \Zend_Http_Response $response
* @return Response
......
......@@ -750,8 +750,8 @@ class Client extends Configurable
/**
* Execute a query
*
* @param QueryInterface
* @param Endpoint|string|null
* @param QueryInterface $query
* @param Endpoint|string|null $endpoint
* @return ResultInterface
*/
public function execute(QueryInterface $query, $endpoint = null)
......@@ -819,8 +819,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Ping\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Ping\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Ping\Result
*/
public function ping(QueryInterface $query, $endpoint = null)
......@@ -845,8 +845,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Update\Query\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Update\Query\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Update\Result
*/
public function update(QueryInterface $query, $endpoint = null)
......@@ -870,8 +870,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Select\Query\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Select\Query\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Select\Result\Result
*/
public function select(QueryInterface $query, $endpoint = null)
......@@ -895,8 +895,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\MoreLikeThis\Query $query
* @param Endpoint
* @param QueryInterface|\Solarium\QueryType\MoreLikeThis\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\MoreLikeThis\Result
*/
public function moreLikeThis(QueryInterface $query, $endpoint = null)
......@@ -910,8 +910,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Analysis\Query\Document|\Solarium\QueryType\Analysis\Query\Field $query
* @param Endpoint
* @param QueryInterface|\Solarium\QueryType\Analysis\Query\Document|\Solarium\QueryType\Analysis\Query\Field $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Analysis\Result\Document|\Solarium\QueryType\Analysis\Result\Field
*/
public function analyze(QueryInterface $query, $endpoint = null)
......@@ -925,8 +925,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Terms\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Terms\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Terms\Result
*/
public function terms(QueryInterface $query, $endpoint = null)
......@@ -940,8 +940,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Suggester\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Suggester\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Suggester\Result\Result
*/
public function suggester(QueryInterface $query, $endpoint = null)
......@@ -955,8 +955,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\Extract\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\Extract\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\Extract\Result
*/
public function extract(QueryInterface $query, $endpoint = null)
......@@ -970,8 +970,8 @@ class Client extends Configurable
* @internal This is a convenience method that forwards the query to the
* execute method, thus allowing for an easy to use and clean API.
*
* @param \Solarium\QueryType\RealtimeGet\Query $query
* @param Endpoint|string|null
* @param QueryInterface|\Solarium\QueryType\RealtimeGet\Query $query
* @param Endpoint|string|null $endpoint
* @return \Solarium\QueryType\RealtimeGet\Result
*/
public function realtimeGet(QueryInterface $query, $endpoint = null)
......
......@@ -324,6 +324,7 @@ class Request extends Configurable
/**
* Set the file to upload via "multipart/form-data" POST request
*
* @throws RuntimeException
* @param string $filename Name of file to upload
* @return self
*/
......
......@@ -67,7 +67,6 @@ class Configurable implements ConfigurableInterface
*
* @throws InvalidArgumentException
* @param array|\Zend_Config $options
* @return void
*/
public function __construct($options = null)
{
......
......@@ -59,7 +59,6 @@ interface ConfigurableInterface
*
* @throws InvalidArgumentException
* @param array|\Zend_Config $options
* @return void
*/
public function __construct($options = null);
......
......@@ -65,7 +65,7 @@ class PostCreateQuery extends Event
* Event constructor
*
* @param string $type
* @param array $query
* @param array $options
* @param QueryInterface $query
*/
public function __construct($type, $options, QueryInterface $query)
......
......@@ -61,6 +61,7 @@ class PostCreateRequest extends Event
* Event constructor
*
* @param QueryInterface $query
* @param Request $request
*/
public function __construct(QueryInterface $query, Request $request)
{
......
......@@ -65,7 +65,7 @@ class PreCreateQuery extends Event
* Event constructor
*
* @param string $type
* @param array|null $query
* @param array|null $options
*/
public function __construct($type, $options)
{
......
......@@ -458,8 +458,8 @@ class Helper
*
* @see http://wiki.apache.org/solr/CommonQueryParameters#Caching_of_filters
*
* @param boolean $useCache
* @param float|null $weight
* @param boolean $useCache
* @param float|null $cost
* @return string
*/
public function cacheControl($useCache, $cost = null)
......
......@@ -50,7 +50,7 @@ abstract class RequestBuilder implements RequestBuilderInterface
/**
* Build request for a select query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -55,7 +55,7 @@ interface ResponseParserInterface
*
* When this method is called the actual response parsing is started.
*
* @param Result\Result $result
* @param \Solarium\Core\Query\Result\Result $result
* @return mixed
*/
public function parse($result);
......
......@@ -90,7 +90,6 @@ class Result implements ResultInterface
* @param Client $client
* @param Query $query
* @param Response $response
* @return void
*/
public function __construct($client, $query, $response)
{
......@@ -136,7 +135,8 @@ class Result implements ResultInterface
*
* Includes a lazy loading mechanism: JSON body data is decoded on first use and then saved for reuse.
*
* @throws UnexpectedValueException, RuntimeException
* @throws UnexpectedValueException
* @throws RuntimeException
* @return array
*/
public function getData()
......
......@@ -38,7 +38,6 @@
*/
namespace Solarium\Plugin\BufferedAdd\Event;
use Symfony\Component\EventDispatcher\Event;
use Solarium\QueryType\Update\Result;
use Solarium\QueryType\Select\Result\DocumentInterface;
/**
......
......@@ -74,7 +74,11 @@ class PreCommit extends Event
/**
* Event constructor
*
* @param array $buffer
* @param array $buffer
* @param boolean $overwrite
* @param boolean $softCommit
* @param boolean $waitSearcher
* @param boolean $expungeDeletes
*/
public function __construct($buffer, $overwrite, $softCommit, $waitSearcher, $expungeDeletes)
{
......
......@@ -484,6 +484,7 @@ class Loadbalancer extends Plugin
/**
* Execute a request using the adapter
*
* @throws RuntimeException
* @param Request $request
* @return Response $response
*/
......
......@@ -138,7 +138,7 @@ class ParallelExecution extends Plugin
/**
* Execute queries parallel
*
* @return Result[]
* @return \Solarium\Core\Query\Result\Result[]
*/
public function execute()
{
......
......@@ -104,10 +104,9 @@ class Document extends Query
/**
* Add a single document
*
*
* @param SelectDocumentInterface|UpdateDocumentInterface $document
* @return self Provides fluent interface
* @throws RuntimeException
* @throws RuntimeException If the given document doesn't have the right interface
*/
public function addDocument($document)
{
......
......@@ -51,7 +51,7 @@ class Document extends BaseRequestBuilder
/**
* Build request for an analysis document query
*
* @param QueryDocument $query
* @param QueryInterface|QueryDocument $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -50,7 +50,7 @@ class Field extends RequestBuilder
/**
* Build request for an analysis field query
*
* @param QueryField $query
* @param QueryInterface|QueryField $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -52,7 +52,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for an analysis query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -58,7 +58,8 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build the request
*
* @param Query $query
* @throws RuntimeException
* @param Query|QueryInterface $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -53,7 +53,7 @@ class RequestBuilder extends SelectRequestBuilder
/**
* Build request for a MoreLikeThis query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -50,7 +50,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for a ping query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -40,6 +40,7 @@ namespace Solarium\QueryType\RealtimeGet;
use Solarium\Core\Query\Query as BaseQuery;
use Solarium\Core\Client\Client;
use Solarium\QueryType\RealtimeGet\RequestBuilder as RequestBuilder;
use Solarium\QueryType\Select\ResponseParser\ResponseParser;
/**
* Get query
......@@ -97,7 +98,7 @@ class Query extends BaseQuery
*/
public function getResponseParser()
{
return new \Solarium\QueryType\Select\ResponseParser\ResponseParser;
return new ResponseParser;
}
/**
......
......@@ -50,7 +50,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for a ping query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -77,7 +77,8 @@ abstract class Component extends Configurable
/**
* Set parent query instance
*
* @return self Provides fluent interface
* @param Query $instance
* @return self Provides fluent interface
*/
public function setQueryInstance(Query $instance)
{
......
......@@ -308,8 +308,8 @@ class FacetSet extends Component
* Add a facet
*
* @throws InvalidArgumentException
* @param Facet\Facet|array $facet
* @return self Provides fluent interface
* @param \Solarium\QueryType\Select\Query\Component\Facet\Facet|array $facet
* @return self Provides fluent interface
*/
public function addFacet($facet)
{
......@@ -385,8 +385,8 @@ class FacetSet extends Component
*
* You can remove a facet by passing its key or the facet instance
*
* @param string|Facet\Facet $facet
* @return self Provides fluent interface
* @param string|\Solarium\QueryType\Select\Query\Component\Facet\Facet $facet
* @return self Provides fluent interface
*/
public function removeFacet($facet)
{
......@@ -440,7 +440,7 @@ class FacetSet extends Component
* @param string $type
* @param array|object|null $options
* @param boolean $add
* @return Facet\Facet
* @return \Solarium\QueryType\Select\Query\Component\Facet\Facet
*/
public function createFacet($type, $options = null, $add = true)
{
......@@ -453,6 +453,7 @@ class FacetSet extends Component
$class = $this->facetTypes[$type];
if (is_string($options)) {
/** @var \Solarium\QueryType\Select\Query\Component\Facet\Facet $facet */
$facet = new $class;
$facet->setKey($options);
} else {
......@@ -471,7 +472,7 @@ class FacetSet extends Component
*
* @param mixed $options
* @param bool $add
* @return Facet\Field
* @return \Solarium\QueryType\Select\Query\Component\Facet\Field
*/
public function createFacetField($options = null, $add = true)
{
......@@ -483,7 +484,7 @@ class FacetSet extends Component
*
* @param mixed $options
* @param bool $add
* @return Facet\Query
* @return \Solarium\QueryType\Select\Query\Component\Facet\Query
*/
public function createFacetQuery($options = null, $add = true)
{
......@@ -495,7 +496,7 @@ class FacetSet extends Component
*
* @param mixed $options
* @param bool $add
* @return Facet\MultiQuery
* @return \Solarium\QueryType\Select\Query\Component\Facet\MultiQuery
*/
public function createFacetMultiQuery($options = null, $add = true)
{
......@@ -507,7 +508,7 @@ class FacetSet extends Component
*
* @param mixed $options
* @param bool $add
* @return Facet\Range
* @return \Solarium\QueryType\Select\Query\Component\Facet\Range
*/
public function createFacetRange($options = null, $add = true)
{
......@@ -519,7 +520,7 @@ class FacetSet extends Component
*
* @param mixed $options
* @param bool $add
* @return Facet\Pivot
* @return \Solarium\QueryType\Select\Query\Component\Facet\Pivot
*/
public function createFacetPivot($options = null, $add = true)
{
......
......@@ -787,7 +787,7 @@ class Highlighting extends Component
/**
* Get MultiValuedSeparatorChar option
*
* @return $separator
* @return string
*/
public function getMultiValuedSeparatorChar()
{
......
......@@ -209,7 +209,7 @@ class FilterQuery extends Configurable
*
* This overwrites any existing tags
*
* @param array $filterQueries
* @param array $tags
* @return self Provides fluent interface
*/
public function setTags($tags)
......
......@@ -190,7 +190,7 @@ class Query extends BaseQuery
/**
* Search components
*
* @var Component[]
* @var AbstractComponent[]
*/
protected $components = array();
......@@ -802,8 +802,8 @@ class Query extends BaseQuery
*
* @throws OutOfBoundsException
* @param string $key Use one of the constants
* @param string $autoload Class to autoload if component needs to be created
* @param array $config Configuration to use for autoload
* @param string|boolean $autoload Class to autoload if component needs to be created
* @param array|null $config Configuration to use for autoload
* @return object|null
*/
public function getComponent($key, $autoload = false, $config = null)
......@@ -890,7 +890,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\MoreLikeThis
* @return \Solarium\QueryType\Select\Query\Component\MoreLikeThis
*/
public function getMoreLikeThis()
{
......@@ -902,7 +902,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\FacetSet
* @return \Solarium\QueryType\Select\Query\Component\FacetSet
*/
public function getFacetSet()
{
......@@ -914,7 +914,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\DisMax
* @return \Solarium\QueryType\Select\Query\Component\DisMax
*/
public function getDisMax()
{
......@@ -926,7 +926,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\EdisMax
* @return \Solarium\QueryType\Select\Query\Component\EdisMax
*/
public function getEDisMax()
{
......@@ -938,7 +938,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\Highlighting\Highlighting
* @return \Solarium\QueryType\Select\Query\Component\Highlighting\Highlighting
*/
public function getHighlighting()
{
......@@ -950,7 +950,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\Grouping
* @return \Solarium\QueryType\Select\Query\Component\Grouping
*/
public function getGrouping()
{
......@@ -962,7 +962,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\Spellcheck
* @return \Solarium\QueryType\Select\Query\Component\Spellcheck
*/
public function getSpellcheck()
{
......@@ -974,7 +974,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\DistributedSearch
* @return \Solarium\QueryType\Select\Query\Component\DistributedSearch
*/
public function getDistributedSearch()
{
......@@ -986,7 +986,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\Stats\Stats
* @return \Solarium\QueryType\Select\Query\Component\Stats\Stats
*/
public function getStats()
{
......@@ -998,7 +998,7 @@ class Query extends BaseQuery
*
* This is a convenience method that maps presets to getComponent
*
* @return Component\Debug
* @return \Solarium\QueryType\Select\Query\Component\Debug
*/
public function getDebug()
{
......
......@@ -58,7 +58,7 @@ class MoreLikeThis implements ComponentRequestBuilderInterface
// enable morelikethis
$request->addParam('mlt', 'true');
$request->addParam('mlt.fl', implode(',', $component->getFields()));
$request->addParam('mlt.fl', count($component->getFields()) ? implode(',', $component->getFields()) : null);
$request->addParam('mlt.mintf', $component->getMinimumTermFrequency());
$request->addParam('mlt.mindf', $component->getMinimumDocumentFrequency());
$request->addParam('mlt.minwl', $component->getMinimumWordLength());
......@@ -66,7 +66,7 @@ class MoreLikeThis implements ComponentRequestBuilderInterface
$request->addParam('mlt.maxqt', $component->getMaximumQueryTerms());
$request->addParam('mlt.maxntp', $component->getMaximumNumberOfTokens());
$request->addParam('mlt.boost', $component->getBoost());
$request->addParam('mlt.qf', implode(',', $component->getQueryFields()));
$request->addParam('mlt.qf', count($component->getQueryFields()) ? implode(',', $component->getQueryFields()) : null);
$request->addParam('mlt.count', $component->getCount());
return $request;
......
......@@ -51,7 +51,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for a select query
*
* @param SelectQuery $query
* @param QueryInterface|SelectQuery $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -86,10 +86,13 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
case 'facet_pivot':
$method = 'createFacetPivot';
break;
default:
throw new RuntimeException('Unknown facet class identifier');
}
foreach ($facets as $k => $facet) {
$facetObject = $facetSet->$method($k);
if ($key == 'facet_pivot') {
/** @var \Solarium\QueryType\Select\Query\Component\Facet\Pivot $facetObject */
$facetObject->setFields($k);
}
}
......@@ -144,19 +147,20 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
* @param Query $query
* @param QueryFacetField $facet
* @param array $data
* @return ResultFacetField
* @return ResultFacetField|null
*/
protected function facetField($query, $facet, $data)
{
$key = $facet->getKey();
if (isset($data['facet_counts']['facet_fields'][$key])) {
if ($query->getResponseWriter() == $query::WT_JSON) {
$data['facet_counts']['facet_fields'][$key] = $this->convertToKeyValueArray($data['facet_counts']['facet_fields'][$key]);
}
if (!isset($data['facet_counts']['facet_fields'][$key])) {
return null;
}
return new ResultFacetField($data['facet_counts']['facet_fields'][$key]);
if ($query->getResponseWriter() == $query::WT_JSON) {
$data['facet_counts']['facet_fields'][$key] = $this->convertToKeyValueArray($data['facet_counts']['facet_fields'][$key]);
}
return new ResultFacetField($data['facet_counts']['facet_fields'][$key]);
}
/**
......@@ -164,17 +168,16 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
*
* @param QueryFacetQuery $facet
* @param array $data
* @return ResultFacetQuery
* @return ResultFacetQuery|null
*/
protected function facetQuery($facet, $data)
{
$key = $facet->getKey();
if (isset($data['facet_counts']['facet_queries'][$key])) {
$value = $data['facet_counts']['facet_queries'][$key];
return new ResultFacetQuery($value);
if (!isset($data['facet_counts']['facet_queries'][$key])) {
return null;
}
return new ResultFacetQuery($data['facet_counts']['facet_queries'][$key]);
}
/**
......@@ -182,7 +185,7 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
*
* @param QueryFacetMultiQuery $facet
* @param array $data
* @return ResultFacetMultiQuery
* @return ResultFacetMultiQuery|null
*/
protected function facetMultiQuery($facet, $data)
{
......@@ -195,9 +198,11 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
}
}
if (count($values) > 0) {
return new ResultFacetMultiQuery($values);
if (count($values) <= 0) {
return null;
}
return new ResultFacetMultiQuery($values);
}
/**
......@@ -206,27 +211,28 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
* @param Query $query
* @param QueryFacetRange $facet
* @param array $data
* @return ResultFacetRange
* @return ResultFacetRange|null
*/
protected function facetRange($query, $facet, $data)
{
$key = $facet->getKey();
if (isset($data['facet_counts']['facet_ranges'][$key])) {
$data = $data['facet_counts']['facet_ranges'][$key];
$before = (isset($data['before'])) ? $data['before'] : null;
$after = (isset($data['after'])) ? $data['after'] : null;
$between = (isset($data['between'])) ? $data['between'] : null;
$start = (isset($data['start'])) ? $data['start'] : null;
$end = (isset($data['end'])) ? $data['end'] : null;
$gap = (isset($data['gap'])) ? $data['gap'] : null;
if ($query->getResponseWriter() == $query::WT_JSON) {
$data['counts'] = $this->convertToKeyValueArray($data['counts']);
}
if (!isset($data['facet_counts']['facet_ranges'][$key])) {
return null;
}
return new ResultFacetRange($data['counts'], $before, $after, $between, $start, $end, $gap);
$data = $data['facet_counts']['facet_ranges'][$key];
$before = (isset($data['before'])) ? $data['before'] : null;
$after = (isset($data['after'])) ? $data['after'] : null;
$between = (isset($data['between'])) ? $data['between'] : null;
$start = (isset($data['start'])) ? $data['start'] : null;
$end = (isset($data['end'])) ? $data['end'] : null;
$gap = (isset($data['gap'])) ? $data['gap'] : null;
if ($query->getResponseWriter() == $query::WT_JSON) {
$data['counts'] = $this->convertToKeyValueArray($data['counts']);
}
return new ResultFacetRange($data['counts'], $before, $after, $between, $start, $end, $gap);
}
/**
......@@ -235,15 +241,16 @@ class FacetSet extends ResponseParserAbstract implements ComponentParserInterfac
* @param Query $query
* @param QueryFacetPivot $facet
* @param array $data
* @return ResultFacetPivot
* @return ResultFacetPivot|null
*/
protected function facetPivot($query, $facet, $data)
{
$key = implode(',', $facet->getFields());
if (isset($data['facet_counts']['facet_pivot'][$key])) {
$data = $data['facet_counts']['facet_pivot'][$key];
return new ResultFacetPivot($data);
if (!isset($data['facet_counts']['facet_pivot'][$key])) {
return null;
}
return new ResultFacetPivot($data['facet_counts']['facet_pivot'][$key]);
}
}
......@@ -62,7 +62,6 @@ class Spellcheck extends ResponseParserAbstract implements ComponentParserInterf
*/
public function parse($query, $spellcheck, $data)
{
$results = array();
if (
isset($data['spellcheck']['suggestions']) &&
is_array($data['spellcheck']['suggestions']) &&
......
......@@ -54,8 +54,7 @@ class DocumentSet implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $docs
* @return void
* @param array $docs
*/
public function __construct($docs)
{
......
......@@ -61,9 +61,8 @@ class Timing implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param float $time
* @param array $phases
* @return void
* @param float $time
* @param array $phases
*/
public function __construct($time, $phases)
{
......
......@@ -68,10 +68,9 @@ class TimingPhase implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param string $name
* @param float $time
* @param array $timings
* @return void
* @param string $name
* @param float $time
* @param array $timings
*/
public function __construct($name, $time, $timings)
{
......
......@@ -58,8 +58,7 @@ class Field implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $values
* @return void
* @param array $values
*/
public function __construct($values)
{
......
......@@ -55,8 +55,7 @@ class Pivot implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $data
* @return void
* @param array $data
*/
public function __construct($data)
{
......
......@@ -69,8 +69,7 @@ class PivotItem extends Pivot
/**
* Constructor
*
* @param array $data
* @return void
* @param array $data
*/
public function __construct($data)
{
......
......@@ -57,8 +57,7 @@ class Query
/**
* Constructor
*
* @param mixed $value
* @return void
* @param mixed $value
*/
public function __construct($value)
{
......
......@@ -96,14 +96,13 @@ class Range extends Field
/**
* Constructor
*
* @param array $values
* @param int $before
* @param int $after
* @param int $between
* @param int $start
* @param int $end
* @param int $gap
* @return void
* @param array $values
* @param int $before
* @param int $after
* @param int $between
* @param int $start
* @param int $end
* @param int $gap
*/
public function __construct($values, $before, $after, $between, $start, $end, $gap)
{
......
......@@ -54,8 +54,7 @@ class FacetSet implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $facets
* @return void
* @param array $facets
*/
public function __construct($facets)
{
......
......@@ -70,10 +70,9 @@ class FieldGroup implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param int $matches
* @param int $numberOfGroups
* @param array $groups
* @return void
* @param int $matches
* @param int $numberOfGroups
* @param array $groups
*/
public function __construct($matches, $numberOfGroups, $groups)
{
......
......@@ -84,12 +84,11 @@ class QueryGroup implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param int $matches
* @param int $numFound
* @param int $start
* @param float $maximumScore
* @param array $documents
* @return void
* @param int $matches
* @param int $numFound
* @param int $start
* @param float $maximumScore
* @param array $documents
*/
public function __construct($matches, $numFound, $start, $maximumScore, $documents)
{
......
......@@ -56,8 +56,7 @@ class Result implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $groups
* @return void
* @param array $groups
*/
public function __construct($groups)
{
......
......@@ -77,11 +77,10 @@ class ValueGroup implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param string $value
* @param int $numFound
* @param int $start
* @param array $documents
* @return void
* @param string $value
* @param int $numFound
* @param int $start
* @param array $documents
*/
public function __construct($value, $numFound, $start, $documents)
{
......
......@@ -55,8 +55,7 @@ class Highlighting implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $results
* @return void
* @param array $results
*/
public function __construct($results)
{
......
......@@ -54,8 +54,7 @@ class Result implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $fields
* @return void
* @param array $fields
*/
public function __construct($fields)
{
......
......@@ -55,8 +55,7 @@ class MoreLikeThis implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $results
* @return void
* @param array $results
*/
public function __construct($results)
{
......
......@@ -71,10 +71,9 @@ class Result implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param int $numFound
* @param int $numFound
* @param float|null $maxScore
* @param array $documents
* @return void
* @param array $documents
*/
public function __construct($numFound, $maxScore, $documents)
{
......
......@@ -216,7 +216,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return MoreLikeThis\Result
* @return \Solarium\QueryType\Select\Result\MoreLikeThis\Result
*/
public function getMoreLikeThis()
{
......@@ -228,7 +228,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return Highlighting\Result
* @return \Solarium\QueryType\Select\Result\Highlighting\Result
*/
public function getHighlighting()
{
......@@ -240,7 +240,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return Grouping\Result
* @return \Solarium\QueryType\Select\Result\Grouping\Result
*/
public function getGrouping()
{
......@@ -264,7 +264,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return Spellcheck\Result
* @return \Solarium\QueryType\Select\Result\Spellcheck\Result
*/
public function getSpellcheck()
{
......@@ -276,7 +276,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return Stats\Result
* @return \Solarium\QueryType\Select\Result\Stats\Result
*/
public function getStats()
{
......@@ -288,7 +288,7 @@ class Result extends BaseResult implements \IteratorAggregate, \Countable
*
* This is a convenience method that maps presets to getComponent
*
* @return Debug\Result
* @return \Solarium\QueryType\Select\Result\Debug\Result
*/
public function getDebug()
{
......
......@@ -70,10 +70,9 @@ class Result implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $suggestions
* @param array $collations
* @param boolean $correctlySpelled
* @return void
* @param array $suggestions
* @param array $collations
* @param boolean $correctlySpelled
*/
public function __construct($suggestions, $collations, $correctlySpelled)
{
......
......@@ -61,9 +61,8 @@ class FacetValue
/**
* Constructor
*
* @param string $value
* @param array $stats
* @return void
* @param string $value
* @param array $stats
*/
public function __construct($value, $stats)
{
......
......@@ -61,9 +61,8 @@ class Result
/**
* Constructor
*
* @param string $field
* @param array $stats
* @return void
* @param string $field
* @param array $stats
*/
public function __construct($field, $stats)
{
......
......@@ -55,8 +55,7 @@ class Stats implements \IteratorAggregate, \Countable
/**
* Constructor
*
* @param array $results
* @return void
* @param array $results
*/
public function __construct($results)
{
......
......@@ -50,7 +50,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for a Suggester query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -53,7 +53,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for a Terms query
*
* @param Query $query
* @param QueryInterface|Query $query
* @return Request
*/
public function build(QueryInterface $query)
......
......@@ -52,7 +52,7 @@ class Add extends Command
/**
* Documents to add
*
* @var DocumentInterface[]
* @var \Solarium\QueryType\Update\Query\Document\DocumentInterface[]
*/
protected $documents = array();
......
......@@ -391,6 +391,7 @@ class Document extends AbstractDocument implements DocumentInterface
*
* Adds validation for atomicUpdates
*
* @throws RuntimeException
* @return array
*/
public function getFields()
......
......@@ -236,8 +236,8 @@ class Query extends BaseQuery
*
* You can remove a command by passing its key or by passing the command instance.
*
* @param string|Command\Command $command
* @return self Provides fluent interface
* @param string|\Solarium\QueryType\Update\Query\Command\Command $command
* @return self Provides fluent interface
*/
public function remove($command)
{
......
......@@ -53,7 +53,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build request for an update query
*
* @param UpdateQuery $query
* @param QueryInterface|UpdateQuery $query
* @return Request
*/
public function build(QueryInterface $query)
......@@ -107,7 +107,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build XML for an add command
*
* @param Query\Command\Add $command
* @param \Solarium\QueryType\Update\Query\Command\Add $command
* @param UpdateQuery $query
* @return string
*/
......@@ -181,7 +181,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build XML for a delete command
*
* @param Query\Command\Delete $command
* @param \Solarium\QueryType\Update\Query\Command\Delete $command
* @return string
*/
public function buildDeleteXml($command)
......@@ -201,7 +201,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build XML for an update command
*
* @param Query\Command\Optimize $command
* @param \Solarium\QueryType\Update\Query\Command\Optimize $command
* @return string
*/
public function buildOptimizeXml($command)
......@@ -218,7 +218,7 @@ class RequestBuilder extends BaseRequestBuilder
/**
* Build XML for a commit command
*
* @param Query\Command\Commit $command
* @param \Solarium\QueryType\Update\Query\Command\Commit $command
* @return string
*/
public function buildCommitXml($command)
......
......@@ -31,6 +31,7 @@
namespace Solarium\Tests\QueryType\Analysis\Query;
use Solarium\QueryType\Analysis\Query\Document;
use Solarium\QueryType\Select\Result\Document as ReadOnlyDocument;
use Solarium\Core\Client\Client;
class DocumentTest extends \PHPUnit_Framework_TestCase
......@@ -63,7 +64,7 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
public function testAddAndGetDocument()
{
$doc = new Document(array('id' => 1));
$doc = new ReadOnlyDocument(array('id' => 1));
$this->query->addDocument($doc);
$this->assertEquals(
array($doc),
......@@ -73,8 +74,8 @@ class DocumentTest extends \PHPUnit_Framework_TestCase
public function testAddAndGetDocuments()
{
$doc1 = new Document(array('id' => 1));
$doc2 = new Document(array('id' => 2));
$doc1 = new ReadOnlyDocument(array('id' => 1));
$doc2 = new ReadOnlyDocument(array('id' => 2));
$this->query->addDocuments(array($doc1, $doc2));
$this->assertEquals(
array($doc1, $doc2),
......
......@@ -75,4 +75,38 @@ class MoreLikeThisTest extends \PHPUnit_Framework_TestCase
}
public function testBuildComponentWithoutFieldsAndQueryFields()
{
$builder = new RequestBuilder;
$request = new Request();
$component = new Component();
$component->setMinimumTermFrequency(1);
$component->setMinimumDocumentFrequency(3);
$component->setMinimumWordLength(2);
$component->setMaximumWordLength(15);
$component->setMaximumQueryTerms(4);
$component->setMaximumNumberOfTokens(5);
$component->setBoost(true);
$component->setCount(6);
$request = $builder->buildComponent($component, $request);
$this->assertEquals(
array(
'mlt' => 'true',
'mlt.mintf' => 1,
'mlt.mindf' => 3,
'mlt.minwl' => 2,
'mlt.maxwl' => 15,
'mlt.maxqt' => 4,
'mlt.maxntp' => 5,
'mlt.boost' => 'true',
'mlt.count' => 6,
),
$request->getParams()
);
}
}
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