The past few months development has been going a bit slower than I had hoped. But still, good progress has been made. Some highlights:
- The default adapter has been switched from ‘Http’ (using streams) to ‘Curl’. Curl supports all features, for instance parallel query execution. Also, the Http adapter makes use of streams which may cause issues of you execute a large number of requests, for instance a full index. Nowadays the Curl extension is available on most environments, if not it’s just one setting to switch back to the Http adapter.
- Support for the ‘omitHeader’ param was added and enabled by default. In most cases the header info isn’t used at all, so sending it down the wire and parsing it is useless. If you do use the headers you can always enable them.
- Edismax is now a separate select query component. In Solarium 2.x Edismax was a setting of the Dismax component but this wasn’t very intuitive. On top of that Edismax and Dismax params are not fully compatible. Splitting into two components fixes both issues.
- The client class has version info. In Solarium 2.x there was a separate (static) class for version info, this has been merged into the client for ease of use.
- Coding standard has been switched from Zend Framework to Symfony 2. It fits better with the current code and PHP-CS is saving a lot of work. While Solarium 3 uses the SF2 coding standard, it will of course still be framework agnostic.
- Http authentication support was contributed and has been merged into the Solarium 3 code
- A new querytype has been added: ‘Extract’. You can use it for indexing documents in Solr, a much requested feature. For more info see this issue on GitHub.
- Support for the Solr ‘phps’ responsewriter. This responsewriter returns data as serialized PHP, instead of JSON. Much more efficient for large responses, at the cost of a possible security risk in PHP deserialization. As long as you use a trusted Solr server this should be no issue, but to be safe the default is still JSON
- The custom event hook system introduced in 2.x for plugin has been replaced by the Symfony EventDispatcher. All events are now defined in detail by event classes, priorities can be used and many more advantages. Any callback can be used as a ‘plugin’, so even a closure can be used. Makes events much more easy to use.