Releases 6.1
Release 6.1.0
Close to the release of TYPO3 8 LTS we are happy to announce EXT:solr 6.1 that is compatible with TYPO3 8 LTS.
New in this release
In this release we've merged over 160 pull requests! With these pull requests several new features and bugfixes were added.
Compatible with TYPO3 8 LTS and PHP 7.1 ready
EXT:solr 6.1 is ready for TYPO3 8 LTS and php 7.1 while keeping the compatibility to TYPO3 7.6 LTS and PHP 5.5 and 5.6.
Backend Performance Improvements
During the development of version 6.1 there have been a lot of smaller and bigger performance improvements. The following changes might be interesting.
Allow to use the closest configuration in the page tree
When a record is saved in the backend by now the whole TypoScript configuration is evaluated for the page where the record is located. In many setups it is enough to just use the closest template in the rootline to parse the configuration. Since there are cases, where this method does not work (e.g. when you use conditions based on page ids) you need to switch this behaviour explicitly on, by enable "useConfigurationFromClosestTemplate".
Add caching when record monitor is used
To optimize the performance the RecordMonitor and GarbageCollector class have been splitted into several components. These components use the TYPO3 caching framework to cache result that do not need to be retrieved multiple times.
Add a global list of monitored tables
If a record is relevant can only be decided in the context of a Solr site because the TypoScript configuration defines the indexing configuration.
When you want to tweek the backend performance you can define a global list of monitoredTables. Other tables will then be ignored and also the parsing of the TypoScript configuration is not needed then.
New Index Inspector
Since extjs will be removed more and more from the TYPO3 core we decided to migrate the index inspector to fluid. You can use the index inspector as usual from "Web > Info > Search Index Inspector" to analyze which documents are in the solr server for a specific page.
Related Issues:
Allow to monitor records outside the siteroot
When the property "additionalPageIds" is configured for an indexing configuration this configuration is now taken into account in the record monitor to re-queue these elements when a change in the backend is done.
Since this is an expensive operation, you can disable this feature by configuring the extension setting (useConfigurationTrackRecordsOutsideSiteroot) in the extension manager.
Related Issues:
Use TYPO3 logging framework instead of devlog
By now the devLog from TYPO3 was used to log messages in the extension. Since several years there is a more flexible logging framework available in the TYPO3 core. In EXT:solr 6.1 we make use of this and use the TYPO3 logging framework to write the logs.
Related Issues:
Use ::class and shorten array syntax
The minimum php version (PHP 5.5) allows us to benefit from PHP language features that make the code more readable:
- Short array syntax: We replaced the parts in the code where
[]
can be used instead ofarray
() - ::class: By using
::
all places where classes get instanciated with GeneralUtility::makeInstance can be simplyfiedclass
Related Issues:
Support partial matches with N-Gram and Edge N-Gram
For some search use cases it makes sence to support partial matches e.g. when you search for "boch" and want to mach a field with the content "bochum".
EXT:solr 6.1.0 shippes new dynamic field types that make "N-Gram" and "Edge N-Gram" processed fields available:
- Edge N-Gram Singlevalue:
\*_
Edge Ngram (hello => hello, hell..)text Edge Ngram S - Edge N-Gram Multivalue:
\*_
Edge Ngram (hello => hello, hell..)text Edge Ngram M - N-Gram Singlevalue:
\*_
Ngram (hello => he,ll,lo,hel,llo)text Ngram S - N-Gram Multivalue:
\*_
Ngram (hello => he,ll,lo,hel,llo)text Ngram M
See also:
https://cuiborails.wordpress.com/2012/07/13/apache-solr-ngramedgengram/
Related Issues:
Allow to disable siteHash check by using allowedSites = *
The siteHash is unique for a Solr site in the TYPO3 system. When Solr does a query the allowedSites setting can be used to control the set of documents that are queried in a Solr core. This is useful when you want to split the content from multiple sites in a single Solr core. In some cases it is useful to disable this limitation.
E.g. when:
- You have data in Solr that comes from another system
- When you want to search across multiple sites
Before the extension "solr_disablesitehash" was required to turn this sitehash check off. With EXT:solr 6.1.0 we've changed the meaning of the allowedSites:
- Before: * was the same as __all, which means all sites in the system
- After: __all is still handled as __all sites in the system, but * now means every site (same as no check at all)
Migration: When you are using * for query.allowedSites change the setting to __all.
Related Issues:
Update jQuery version
In this release we have updated the shipped jQuery and jQueryUi components to the following versions:
- jQuery: v3.1.1
- jQuery UI: v1.12.1
Related Issues:
Fix scrutinizer issues
A lot of issues (formatting, small bugs, documentation,...) reported by scrutinizer have been resolved in this release.
Related Issues:
- https://github.com/TYPO3-Solr/ext-solr/issues/1100
- https://github.com/TYPO3-Solr/ext-solr/issues/1079
- https://github.com/TYPO3-Solr/ext-solr/issues/1070
- https://github.com/TYPO3-Solr/ext-solr/issues/1066
- https://github.com/TYPO3-Solr/ext-solr/issues/1064
- https://github.com/TYPO3-Solr/ext-solr/issues/1010
Add Solr access filter plugin 2.0.0
The Solr access filter plugin has been optimized to use a Solr post filter. By using a post filter the performance of this plugin is much better, because less documents need to be evaluated. In this release we ship this new version 2.0.0 of the access filter with the default configSet and in our docker container.
Related Issues:
Preparation for Doctrine migration
In the next release we will drop the support of TYPO3 7 LTS and only support 8 LTS. Since in the TYPO3 core the database access was migrated to Doctrine, we will use Doctrine as well.
To simplify this, we have centralized a lot of database queries in this release and also dropped duplicate queries to reduce to amount of work that needs to be done for this in the next releaese.
Related Issues:
Allow self signed ssl certificates
Not every project can use officially signed SSL certificates for all stages. Because of that we allowed for the page indexing to index a host, with a self signed certificate.
You can enable this feature by configuring the extension setting (allowSelfSignedCertificates) in the extension manager to true.
Related Issues:
Add cObject support for Solr settings
When you use EXT:solr in a deployment scenario (e.g. platform.sh) you maybe want to define the Solr endpoints by environment variables or from variables in TYPO3_CONF_VARS. Both approaches are supported by the TypoScript TEXT object.
Therefore it makes sence for the Solr endpoint settings in plugin.
to support the usage of cObjects there. This allows you to define connections like this:
Addition to AdditionalConfiguration.php:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['host'] = 'mysolrserver.de';
Usage in TypoScript:
plugin.tx_solr.solr {
host = TEXT
host {
value = localhost
override.data = global:TYPO3_CONF_VARS|EXTCONF|solr|host
}
}
Related Issues:
Deprecated code
For the continues improvement of the codestructure and preparation for upcoming tasks, the following methods have been marked as deprecated and will be removed in EXT:solr 7.0 (next release):
- GarbageCollector::cleanIndex
- Query::addSortField
- Query::getSortingFields
- SolrService::getSchemaName
- Util::timestampToIso
- Util::isoToTimestamp
- Util::timestampToUtcIso
- Util::utcIsoToTimestamp
- Util::getRootPageId
- Util::isRootPage
- Util::getSiteHashForDomain
- Util::resolveSiteHashAllowedSites
- Item::updateIndexedTime
- Queue::getIndexingConfigurationByItem
- Queue::getIndexingConfigurationsByItem
- Queue::getItemsCountBySite
- Queue::getRemainingItemsCountBySite
- TypoScriptConfiguration::getIndexQueuePagesAllowedPageTypesArray
- QueryTest::canAddSortField
- Site::getLanguages
- Site::getFirstAvailableSite
- Site::getAvailableSites
- Site::getAvailableSitesSelector
Please check your deprecation log and replace the usages in your code.
Breaking changes
In this release some breaking changes have been required. Please follow the notes below when you migrate from 6.0 to 6.1
Default variantId changed
The default variantId was table/
before since this id is not unique across multiple TYPO3 system, a system hash was added before.
The scheme of the new variantId is systemhash/
and allows to use grouping when data from multiple TYPO3 systems get indexed and searched.
Migration:
Reindex the Solr data to get the new variantId.
Related Issues:
Semantic of allowedSites changed
Migration:
When you use plugin.
you should now use plugin.
Related Issues:
Setting debugDevlogOutput replaced by debugOutput
Because the devLog was replaced by the logging framework, the setting plugin.
does not make sence anymore.
Migration:
When you want to see the log output in the backend or frontend please use plugin.
now.
Related Issues:
"Only variables should be assigned by reference" in IndexQueueIndexer::preAddModifyDocuments()
Along we the removal of the reference GeneralUtility::getUserObj
was replaced with GeneralUtility::makeInstance
, because the usage with ":" is deprecated since TYPO3 8 and will be removed.
Migration:
When you reference custom indexer (in $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['solr']['IndexQueueIndexer']['indexItemAddDocuments']
) you should reference only an autoloadable classname.
The following steps are required:
- Move your Indexer to an own extension with proper autoloading configuration
- Reference the autoloadable classname
Related Issues:
Bugfixes
StatisticRepository::getTopKeyWordsWithOrWithoutHits $limit, $withoutHits have no default values
https://github.com/TYPO3-Solr/ext-solr/issues/1143
Wrong TS path in frontendDataHelper documentation
https://github.com/TYPO3-Solr/ext-solr/issues/964
Invalid include paths after scheduler run
https://github.com/TYPO3-Solr/ext-solr/issues/921
Backend Summary not working
https://github.com/TYPO3-Solr/ext-solr/issues/731
Queue initialization returns wrong (duplicate) results for second site root in multisite environment
https://github.com/TYPO3-Solr/ext-solr/issues/488
solrconfig.xml More Like This Handler configuration is broken
https://github.com/TYPO3-Solr/ext-solr/issues/765
Fix position of default stopwords
https://github.com/TYPO3-Solr/ext-solr/issues/578
Bug/unwanted feature in method getPages in Site.php
https://github.com/TYPO3-Solr/ext-solr/issues/652
Custom field is not indexed for custom page queue configuration
https://github.com/TYPO3-Solr/ext-solr/issues/842
GarbageCollector fails to check endtime correctly
https://github.com/TYPO3-Solr/ext-solr/issues/1212
"Only variables should be assigned by reference" in IndexQueueIndexer::preAddModifyDocuments()
https://github.com/TYPO3-Solr/ext-solr/issues/1183
Use urlencode for deletion of synonyms and stopwords
https://github.com/TYPO3-Solr/ext-solr/issues/1205 https://github.com/TYPO3-Solr/ext-solr/issues/1206
Contributors
Like always this release would not have been possible without the help from our awesome community. Here are the contributors for this release.
(patches, comments, bug reports, reviews, ... in alphabetical order)
- Andreas Allacher
- Andriy Oprysko
- Arno Schoon
- Frank Nägler
- Frans Saris
- Ingo Renner
- Josef Glatz
- Markus Kobligk
- Rafael Kähm
- Rasmus Larsen
- Sascha Egerer
- Thomas Hohn
- Timo Hund
- Tomas Norre Mikkelsen
Also a big thanks to our partners that have joined the EB2017 program:
- Amedick & Sommer
- amarantus - media design & coding Mario Drengner & Enrico Nemack GbR
- Animate Agentur für interaktive Medien GmbH
- artif GmbH & Co. KG
- AVM Computersysteme Vertriebs GmbH
- b:dreizehn GmbH
- Bitmotion GmbH
- cab services ag
- Causal Sàrl
- Creative360
- cron IT GmbH
- data-graphics GmbH
- Deutscher Ärzteverlag GmbH
- Deutscher Volkshochschul-Verband
- Die Medialen GmbH
- dörler engineering services
- hauptsache.net
- Havas Düsseldorf GmbH
- itl AG
- jweiland.net
- KEMWEB GmbH & Co. KG
- Leibniz Universität IT Services, Hannover
- Lime Flavour GbR
- LOUIS INTERNET
- Maximillian Walter
- Mercedes-AMG GmbH
- mpm media process management GmbH
- n@work Internet Informationssysteme GmbH
- Netcreators BV (Netherlands)
- NetSpring s.r.l.
- netz-haut GmbH
- polar gold
- punkt.de
- sitegeist media solutions GmbH
- Star Finanz GmbH
- Studio 9 GmbH
- stratis
- systime
- takomat Agentur GbR
- Triplesense Reply
- Typoheads GmbH
- UEBERBIT GmbH
- WACON Internet GmbH
- Universität Bremen
- webconsulting business services gmbh
- zdreicom AG
- zimmer7 GmbH
Thanks to everyone who helped in creating this release!
How to Get Involved
There are many ways to get involved with Apache Solr for TYPO3:
- Submit bug reports and feature requests on GitHub
- Ask or help or answer questions in our Slack channel
- Provide patches through Pull Request or review and comment on existing Pull Requests
- Go to www.typo3-solr.com or call dkd to sponsor the ongoing development of Apache Solr for TYPO3
Support us in 2017 by becoming an EB partner:
http://www.typo3-solr.com/en/contact/
or call:
+49 (0)69 - 2475218 0