Skip to content

Releases: solariumphp/solarium

6.3.6

27 Nov 14:55
Compare
Choose a tag to compare

Added

  • PHP 8.4 support
  • Solarium\QueryType\Select\Query\Quey::setCanCancel()
  • Solarium\QueryType\Select\Query\Quey::setQueryUuid()
  • Solarium\QueryType\Select\Query\Quey::setPartialResults()
  • Solarium\QueryType\Select\Query\Quey::setCpuAllowed()
  • Solarium\QueryType\Select\Query\Quey::setMemAllowed()
  • Solarium\QueryType\Select\Query\Quey::setSegmentTerminateEarly()
  • Solarium\QueryType\Select\Query\Quey::setMultiThreaded()

Fixed

  • JSON update requests correctly handle Stringable object set as field value

Changed

  • JSON update requests give precedence to Stringable over JsonSerializable for object set as field value to keep behaviour consistent across request formats

Removed

  • Support for config objects, you have to convert them to an array before passing to a constructor or setOptions()

Deprecated

  • Solarium\Core\Query\AbstractQuery::setTimeAllowed(), moved to Solarium\QueryType\Select\Query\Query

6.3.5

10 Jan 10:45
Compare
Choose a tag to compare

Added

  • Option buildAll for Suggesters
  • NoWaitForResponseRequest Plugin

Fixed

  • PHP 8.2 deprecations for Solarium\QueryType\Server\Collections results

6.3.4

04 Dec 11:59
7a7232f
Compare
Choose a tag to compare

Added

  • PHP 8.3 support
  • Solarium\QueryType\Server\Api\Result::getWarning()
  • Term Vector Component

Fixed

  • ParallelExecution adds a HttpException instead of an empty Result in case of an endpoint failure
  • Facet pivot stats contain all fields (previously only the last field was present in the result)
  • Facet pivot stats return NAN for a mean value that's NaN
  • Facet pivot stats return an associative array for percentiles
  • PHP 8.2 deprecation for V1 Config/V2 Introspect API results

Changed

  • Facet pivot stats results use the field name instead of 'stats_fields' as array key

6.3.3

14 Oct 14:48
Compare
Choose a tag to compare

Changed

  • Spatial component distance type changed from int to float
  • Revert return type for Solarium\Component\QueryTrait::setQuery() from self to QueryInterface for backward compatibility with custom query classes that override this method

6.3.2

19 Sep 07:10
Compare
Choose a tag to compare

Added

  • Solarium\Component\ReRankQuery::setOperator()
  • Solarium\Component\ReRankQuery::setScale() and setMainScale()

Fixed

  • MinimumScoreFilter can have a null value in a ValueGroupResult
  • Warning when building an Extract request from a stream resource without an associated URI/filename

Changed

  • LoadBalancer plugin blocks Extract queries from load balancing by default

Removed

  • PHP 7 support

6.3.1

22 Jun 19:33
Compare
Choose a tag to compare

Added

  • Loadbalancer plugin can failover on an optional list of HTTP status codes
  • Solarium\QueryType\Extract\Query::setFile() now supports file pointer resources
  • Solarium\QueryType\Extract\Result::getFile() and getFileMetadata() to access the retrieved data for extractOnly=true

Fixed

  • Solarium\Core\Query\Helper::escapeTerm() has to quote reserved terms AND, OR, TO

Changed

  • Solarium\Core\Client\Endpoint::setAuthentication() marks $password as #[\SensitiveParameter] (PHP 8 >= 8.2.0)
  • Solarium\Core\Client\Endpoint::setAuthorizationToken() marks $token as #[\SensitiveParameter] (PHP 8 >= 8.2.0)
  • Solarium\Core\Client\Request::setAuthentication() marks $password as #[\SensitiveParameter] (PHP 8 >= 8.2.0)

6.3.0

13 Jun 07:52
2629538
Compare
Choose a tag to compare

Added

  • Support for Luke queries
  • Solarium\Component\QueryElevation::setExcludeTags()
  • Solarium\Core\Query\Result\QueryType::getStatus() and getQueryTime(), inherited by all Solarium\QueryType Results
  • Solarium\QueryType\CoreAdmin\Result\Result::getInitFailureResults()
  • Solarium\QueryType\Ping\Result::getPingStatus() and getZkConnected()
  • Fluent interface methods for adding/removing excludes in Solarium\Component\Facet\AbstractFacet
  • Fluent interface methods for adding/removing terms in Solarium\Component\Facet\Field

Fixed

  • JSON serialization of arrays with non-consecutive indices in multivalue fields
  • PHP 8.2 deprecations
  • Handling of escaped literal commas in local parameters for faceting

Changed

  • Update queries use the JSON request format by default
  • Ping queries set omitHeader=false by default

Removed

  • Removed deprecated class constant Client::Version. Use Client::getVersion() instead
  • Removed Core/Query/AbstractResponseParser::addHeaderInfo()

Deprecated

  • Solarium\QueryType\Server\Collections\Result\CreateResult::getStatus(), use getCreateStatus() instead
  • Solarium\QueryType\Server\Collections\Result\DeleteResult::getStatus(), use getDeleteStatus() instead
  • Solarium\QueryType\Server\Collections\Result\ReloadResult::getStatus(), use getReloadStatus() instead
  • LocalParameters::removeTerms(), use removeTerm() instead

6.2.8

06 Dec 10:25
Compare
Choose a tag to compare

Changes since 6.2.7

Added

  • PHP 8.2 support
  • JSON formatted update requests
  • Solarium\Component\Highlighting\Highlighting::setQueryFieldPattern()

Changes since 6.2.6

Added

  • Core\Client\Adapter\Curl::setProxy() to set proxy (instead of through options)
  • Proxy support for Http adapter with Core\Client\Adapter\Http::setProxy()
  • Authorization token support

Fixed

  • Plugins unregister event listeners when removed with Client::removePlugin()
  • Workaround for opcache.preload issue in deprected code unless 6.3.0 will be released

Changed

  • RequestBuilders must set a Content-Type on the Request for POST and PUT requests. Adapters no longer set a default.

Deprecated

  • Setting proxy on the Curl adapter through options, use setProxy() instead

Changes since 6.2.5

Fixed

  • An empty array for a multiValued field was wrongly interpreted as an empty child document by the Update request builder in 6.2.5

Changes since 6.2.4

Added

  • Results and Documents implement JsonSerializable
  • ParallelExecution dispatches PreExecute, PreExecuteRequest, PostExecuteRequest, PostExecute events. It can be combined with plugins that hook into these events (e.g. PostBigRequest).
  • ParallelExecution support for Server queries
  • Solarium\Client::getVersion()

Fixed

  • Adding nested child documents through Document::setField() and Document::addField()

Changed

  • ParallelExecution doesn't replace an existing cURL adapter on the Client. Timeout and proxy settings are honoured on parallel requests.
  • ParallelExecution sets the 'timeout' and 'connectiontimeout' options from (Connection)TimeoutAware adapters when switching to a cURL adapter

Removed

  • Solarium\QueryType\Update\Query\Document::setFilterControlCharacters(), extend Update\Query\Query to use a custom request builder & helper if you don't want control characters filtered

Deprecated

  • Solarium\Client::VERSION

Pitfall when upgrading from 3.x or 4.x or 5.x

Setting "timeout" as "option" in the HTTP Client Adapter is deprecated since Solarium 5.2.0 because not all adapters
could handle it. The adapters which can handle it now implement the TimeoutAwareInterface and you need to set the
timeout using the setTimeout() function after creating the adapter instance.

In order to fix some issues with complex queries using local parameters solarium 6 destinguishs between query parameters
and local parameters to be embedded in a query. Solarium 5.2 already informed you about the deprecation of some
parameter names which are in fact local parameters. Solarium doen't convert them magically anymore.
Local parameter names now have to be prefixed with local_ if set as option of a constructor.

Solarium 5:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

Solarium 6:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['local_key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

See https://lucene.apache.org/solr/guide/8_5/local-parameters-in-queries.html for an introduction about local parameters.

Pitfall when upgrading from 3.x or 4.x

In the past, the V1 API endpoint solr was not added automatically, so most users set it as path on the endpoint.
This bug was discovered with the addition of V2 API support. In almost every setup, the path has to be set to /
instead of /solr with this release!

For the same reason it is a must to explicit configure the core or collection.

So an old setting like

'path' => '/solr/xxxx/'

has to be changed to something like

'path' => '/',
'collection' => 'xxxx',

This led to a problem if the endpoint isn't the default solr. Since 6.2.1, a different context can be configured.

An old settings like

'path' => '/index/xxxx/'

can be changed to something like

'path' => '/',
'context' => 'index',
'collection' => 'xxxx',

This works for SolrCloud instances with a non-default hostContext and Solr instances behind a reverse proxy.

6.2.7

12 Sep 09:47
Compare
Choose a tag to compare

Changes since 6.2.6

Added

  • Core\Client\Adapter\Curl::setProxy() to set proxy (instead of through options)
  • Proxy support for Http adapter with Core\Client\Adapter\Http::setProxy()
  • Authorization token support

Fixed

  • Plugins unregister event listeners when removed with Client::removePlugin()
  • Workaround for opcache.preload issue in deprected code unless 6.3.0 will be released

Changed

  • RequestBuilders must set a Content-Type on the Request for POST and PUT requests. Adapters no longer set a default.

Deprecated

  • Setting proxy on the Curl adapter through options, use setProxy() instead

Changes since 6.2.5

Fixed

  • An empty array for a multiValued field was wrongly interpreted as an empty child document by the Update request builder in 6.2.5

Changes since 6.2.4

Added

  • Results and Documents implement JsonSerializable
  • ParallelExecution dispatches PreExecute, PreExecuteRequest, PostExecuteRequest, PostExecute events. It can be combined with plugins that hook into these events (e.g. PostBigRequest).
  • ParallelExecution support for Server queries
  • Solarium\Client::getVersion()

Fixed

  • Adding nested child documents through Document::setField() and Document::addField()

Changed

  • ParallelExecution doesn't replace an existing cURL adapter on the Client. Timeout and proxy settings are honoured on parallel requests.
  • ParallelExecution sets the 'timeout' and 'connectiontimeout' options from (Connection)TimeoutAware adapters when switching to a cURL adapter

Removed

  • Solarium\QueryType\Update\Query\Document::setFilterControlCharacters(), extend Update\Query\Query to use a custom request builder & helper if you don't want control characters filtered

Deprecated

  • Solarium\Client::VERSION

Pitfall when upgrading from 3.x or 4.x or 5.x

Setting "timeout" as "option" in the HTTP Client Adapter is deprecated since Solarium 5.2.0 because not all adapters
could handle it. The adapters which can handle it now implement the TimeoutAwareInterface and you need to set the
timeout using the setTimeout() function after creating the adapter instance.

In order to fix some issues with complex queries using local parameters solarium 6 destinguishs between query parameters
and local parameters to be embedded in a query. Solarium 5.2 already informed you about the deprecation of some
parameter names which are in fact local parameters. Solarium doen't convert them magically anymore.
Local parameter names now have to be prefixed with local_ if set as option of a constructor.

Solarium 5:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

Solarium 6:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['local_key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

See https://lucene.apache.org/solr/guide/8_5/local-parameters-in-queries.html for an introduction about local parameters.

Pitfall when upgrading from 3.x or 4.x

In the past, the V1 API endpoint solr was not added automatically, so most users set it as path on the endpoint.
This bug was discovered with the addition of V2 API support. In almost every setup, the path has to be set to /
instead of /solr with this release!

For the same reason it is a must to explicit configure the core or collection.

So an old setting like

'path' => '/solr/xxxx/'

has to be changed to something like

'path' => '/',
'collection' => 'xxxx',

This led to a problem if the endpoint isn't the default solr. Since 6.2.1, a different context can be configured.

An old settings like

'path' => '/index/xxxx/'

can be changed to something like

'path' => '/',
'context' => 'index',
'collection' => 'xxxx',

This works for SolrCloud instances with a non-default hostContext and Solr instances behind a reverse proxy.

6.2.6

22 Jul 10:47
Compare
Choose a tag to compare

Changes since 6.2.5

Fixed

  • An empty array for a multiValued field was wrongly interpreted as an empty child document by the Update request builder in 6.2.5

Changes since 6.2.4

Added

  • Results and Documents implement JsonSerializable
  • ParallelExecution dispatches PreExecute, PreExecuteRequest, PostExecuteRequest, PostExecute events. It can be combined with plugins that hook into these events (e.g. PostBigRequest).
  • ParallelExecution support for Server queries
  • Solarium\Client::getVersion()

Fixed

  • Adding nested child documents through Document::setField() and Document::addField()

Changed

  • ParallelExecution doesn't replace an existing cURL adapter on the Client. Timeout and proxy settings are honoured on parallel requests.
  • ParallelExecution sets the 'timeout' and 'connectiontimeout' options from (Connection)TimeoutAware adapters when switching to a cURL adapter

Removed

  • Solarium\QueryType\Update\Query\Document::setFilterControlCharacters(), extend Update\Query\Query to use a custom request builder & helper if you don't want control characters filtered

Deprecated

  • Solarium\Client::VERSION

Pitfall when upgrading from 3.x or 4.x or 5.x

Setting "timeout" as "option" in the HTTP Client Adapter is deprecated since Solarium 5.2.0 because not all adapters
could handle it. The adapters which can handle it now implement the TimeoutAwareInterface and you need to set the
timeout using the setTimeout() function after creating the adapter instance.

In order to fix some issues with complex queries using local parameters solarium 6 destinguishs between query parameters
and local parameters to be embedded in a query. Solarium 5.2 already informed you about the deprecation of some
parameter names which are in fact local parameters. Solarium doen't convert them magically anymore.
Local parameter names now have to be prefixed with local_ if set as option of a constructor.

Solarium 5:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

Solarium 6:

$categoriesTerms = new Solarium\Component\Facet\JsonTerms(['local_key' => 'categories', 'field' => 'cat', 'limit'=>4,'numBuckets'=>true]);

See https://lucene.apache.org/solr/guide/8_5/local-parameters-in-queries.html for an introduction about local parameters.

Pitfall when upgrading from 3.x or 4.x

In the past, the V1 API endpoint solr was not added automatically, so most users set it as path on the endpoint.
This bug was discovered with the addition of V2 API support. In almost every setup, the path has to be set to /
instead of /solr with this release!

For the same reason it is a must to explicit configure the core or collection.

So an old setting like

'path' => '/solr/xxxx/'

has to be changed to something like

'path' => '/',
'collection' => 'xxxx',

This led to a problem if the endpoint isn't the default solr. Since 6.2.1, a different context can be configured.

An old settings like

'path' => '/index/xxxx/'

can be changed to something like

'path' => '/',
'context' => 'index',
'collection' => 'xxxx',

This works for SolrCloud instances with a non-default hostContext and Solr instances behind a reverse proxy.