Releases: TYPO3-Solr/ext-solr
6.1.1 - Maintenance release
Apache Solr for TYPO3 version 6.1.1 released
This release is a bugfix only release.
Ignore workspaces in RootPageResolver
When the rootPage resolver was called with $pageId = -1 it tried to check if this is really a rootPage.
Since we know that this is a workspace page, the RootPageResolver returns false now.
Allow to limit the solr:updateConnections command to a rootpageid
To be able to initialize only a few connections the option --rootpageid was added.
Indexing records outside the rootline throws Exception
The Indexer uses the item record page to resolve the configuration. This can lead to problems when the records is outside a siteroot because the configuration is not present there.
This fix uses the configuration of the siteroot when no configuration is present as fallback to have an indexing configuration available.
Tracking changes in records of other siteroots is not working as expected
The following scenario is given:
- Site a
- Site b
Site a references record from site b in additionalPageIds. When a change is done in the record we expect that the index queue item for both sites is created, since it is referenced in both sides. By now the tracking of the record outside the siteroot is only working when the referenced record does not belong to another site.
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 Lappe
- Markus Friedrich
- Rafael Kähm
- Rémy Daniel
- Timo Hund
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
6.1.0 - Ready for TYPO3 8 LTS
We are ready for TYPO3 8 LTS - EXT:solr 6.1 has been released
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
::class
all places where classes get instanciated with GeneralUtility::makeInstance can be simplyfied
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:
\*_textEdgeNgramS
Edge Ngram (hello => hello, hell..) - Edge N-Gram Multivalue:
\*_textEdgeNgramM
Edge Ngram (hello => hello, hell..) - N-Gram Singlevalue:
\*_textNgramS
Ngram (hello => he,ll,lo,hel,llo) - N-Gram Multivalue:
\*_textNgramM
Ngram (hello => he,ll,lo,hel,llo)
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 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:
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.tx_solr.solr
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
...
6.0.1 - Maintenance release
Apache Solr for TYPO3 version 6.0.1 released
This release is a bugfix only release.
Empty username or password lead to authentication with empty credentials
When no username of password was configured an authentication with empty credentials was done.
Error when solr path consists of more then two segments
When the solr path has more then two segments (e.g. /solr/core) a core reload failed.
6.0.0 - Support of Apache Solr 6.3 / Docker Images & Performance Tuning
Dia dhuit - Hello "Apache Solr for TYPO3" 6.0
We're happy to announce the release of Apache Solr for TYPO3 (EXT:solr) version 6.0.0.
With this release we ship support for Apache Solr 6.3 and provide a Docker file, that
can be used to spin up a Solr server configured and ready to run within a few steps.
Besides that the release contains many other features and bugfixes.
New in This Release
In this release we've merged over 120 pull requests!
With these pull requests several new features and bugfixes were added.
Apache Solr 6.3 Support
The focus of this release was adding support for the latest version of Apache Solr
and making setup easier. Configuration of Apache Solr is now provided via configSets.
A configSet contains everything you need - solrconfig.xml, schema.xml & custom
access filter jar files - to configure and run a Solr server for use with TYPO3.
Related PRs:
Access Filter Support for multi-value Access Fields
The next release of EXT:solrfal will allow merging of duplicates into one document.
The implementation of this feature requires that the permissions are stored in a multi-value
field because different references to a file can have different permissions.
Thus the access field is now a multi-value field and the access filter plugin
is able to evaluate multiple access values.
Related PRs:
Fluid Templates for System Status Reports
By using the Fluid standalone views we have adapted the status reports
to use these views and create better output.
Related PRs:
Support for New Languages (Irish, Serbian and Latvian)
With the new Apache Solr version we have added languages Irish, Serbian, and Latvian.
You can now use them to index sites in these languages by creating a Solr core using the
configuration provided by the extension.
Related PRs:
Use Extbase Command Controller to Update Connections
The old cli commands have been replaced with an Extbase command controller.
Please use the following commands to update Solr connections through cli:
php ./typo3/cli_dispatch.phpsh extbase solr:updateConnections
Related PRs:
Closer to 8 LTS
Our goal is to be able to support TYPO3 CMS v8 as soon as version 8 LTS will be released.
Many patches from the community have been merged to improve the compatibility for version 8 already.
Thanks to everyone who worked on that and provided contributions!
Related PRs:
Performance Improvements
Avoid schema retrieval:
Until now the Solr schema was fetched in the frontend even when it was not needed.
Now we only fetch the schema in the backend when it's really needed (when updating stopswords or synonyms).
Reduce ping requests:
The amount of ping requests has been reduced to only do one ping when the plugin is rendered.
Improved configuration caching:
Configuration object, are now cached in an in memory cache. This gives an improvement when pages in the backend are copied.
Related PRs:
Allow Solr Server-Side Facet Option Limits
Until now you could only limit the facet options shown when they get rendered in the frontend.
Sometimes however you want to reduce the available facet options at an earlier time when
retrieving them from Solr.
The following setting now allows you to configure this limit:
plugin.tx_solr.search.faceting.facetLimit = 50
Related PRs:
Improved Code Quality With Scrutinizer
To ensure changes don't reduce the quality of the code we have introduced Scrutinizer-CI to
provide feedback on code quality. After adding Scrutinizer-CI we also started to resolve
initial issues reported step by step and to increase the coverage of automated tests.
You can have a look at the results of the inspections and see the impact there:
https://scrutinizer-ci.com/g/TYPO3-Solr/ext-solr/statistics/
A couple pull requests have been merged to introduce Scrutinizer and to fix several issues:
Related PRs:
Our goal is to improve the code step by step and don't get worse.
Use of Compound Index Format
To avoid an error in Apache Solr with "too many open files", it is possible
to use the compound index format. Apache Solr is then writting to only one
index file instead of many. The downside however, is that the performance may
be slightly reduced but should not be significant for most projects.
We decided to change the default configuration here to use a more robust setting.
If you have very high performance requirements you can still change this behavior
by setting <useCompoundFile>false</useCompoundFile>
in your solrconfig.xml.
Related PRs:
Added Schema Field for Exact Matches
We've added a new data type "textExact" to the solr schema. Beside that copyFields have been added for the following fields:
- titleExact
- contentExact
- tagsH1Exact
- tagsH2H3Exact
- tagsH4H5H6Exact
- tagsInlineExact
Beside that this type is also available as dynamic fields with the following suffixes:
- _textExactS
- _textExactM
Related PRs:
Username and Password for Solr Connection
Username and password can now be configured for the solr connection:
plugin.tx_solr.solr.username = username
plugin.tx_solr.solr.password = password
Related PRs:
Timeout for Solr Connection
A timeout for the solr connection can now be configured:
plugin.tx_solr.solr.timeout = 20
Related PRs:
Rendering Instruction for DateFormatting
The following rendering instruction can be used, when you want to format a date as option facet and store it as date or timestamp.
plugin.tx_solr.search.faceting.facets.created {
field = created
label = Created
sortBy = alpha
reverseOrder = 1
renderingInstruction = TEXT
renderingInstruction {
field = optionValue
postUserFunc = ApacheSolrForTypo3\Solr\Domain\Search\ResultSet\Facets\RenderingInstructions\FormatDate->format
}
}
Related PRs:
Breaking Changes
Updating from version 5.1.1 or earlier there are some breaking changes that
your need to keep in mind when updating.
Apache Solr 6 and Access Filter
Since version 6 Apache Solr comes with an embedded Jetty server which completely
changes the setup compared to Apache Solr 4.10. It is now required to install a
new instance of Apache Solr Server. This can be done with our install script for
development or you can use our Docker image to start a new Solr server as a container.
Both approaches are described in our documentation. The embedded Solr Jetty server also uses a new default port (8983) to serve connections.
Migration to Command Controllers for CLI
We are now using a command controller to update the Solr server connections.
Please use the following command to update your connections:
php ./typo3/cli_dispatch.phpsh extbase solr:updateConnections
Bugfixes
The following bugs have been fixed in this release.
- Page is not added to queue when page_language_overlay record changed
#768 - Use TypoScript configuration object for plugin baseWrap
#697 - Fixed group by and statement in statistics
#722 - Make definition of cookie in tx_solr_statistics compatible with ses_id in fe_sessions
#713 - Fix recursive value resolution in SOLR_RELATION
#692 - Use styled fields for the scheduler tasks
#672 - Have index updated when using frontend editing
#648 - Make suggest working when variants are used
#627
Outlook
In the next release (6.1) our focus will be to prepare support for TYPO3 CMS
version 8 LTS as well as possible. The next release (6.1) will also be the
last release for TYPO3 CMS version 7.6 LTS.
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)
- Anjey
- Claus Due
- Daniel Siepmann
- Dominique Kreemers
- Georg Ringer
- Hendrik Putzek
- Ingo Renner
- Josef Glatz
- Markus Friedrich
- Markus Kasten
- Michiel Roos
- Olivier Dobberkau
- Patrick Oberdorf
- Peter Kraume
- Philipp Gampe
- Pierrick Caillon
- Sascha Egerer
- Thomas Hohn
- Timo Hund
- Tomas Norre Mikkelsen
Also a big thanks to our partners that have joined the EB2016 program:
- Arrabiata Solutions GmbH & Co. KG
- a...
5.1.1 - Maintenance release
Apache Solr for TYPO3 version 5.1.1 released
This release is a bugfix only release.
SOLR_RELATION: Recursive value resolution
By using the SOLR_RELATION option enableRecursiveValueResolution
relations can be resolved recursive if the given foreignLabelField
is a relation too. The bugfix resolves this issue and adapts the integration test to check if this feature is working.
Details: #690
5.1.0 document variants / ux improvements / be statistics
Apache Solr for TYPO3 version 5.1.0 released
We're happy to announce the release of Apache Solr for TYPO3 (EXT:solr) version 5.1.0. This release ships a few bugfixes and smaller features
New in this Release
The focus of this release was to provide the new features from the codesprint and bugfixes from the issue tracker. Beside that, we've added a variants feature that could be used together with the upcomming solrfal release as one approach to avoid duplicated files in the search frontend.
Document Variants
This feature adds a new optional field variantId that is filled with type/uid and can be used for collapsing by default.
The following example shows the required typoscript configuration that is needed:
plugin.tx_solr.search {
variants = 0
variants {
expand = 1
variantField = variantId
limit = 10
}
}
The collapsing can be used to collapse on numeric and string fields, text fields are not supported for collapsing by Solr.
Note: You need to update your solrconfig and schema to use the new field variantId. When you include the TS Template "Everything on", variants are active. You need to reindex in this case to make sure that the field is filled correctly.
Details: #550
Improved Documentation
During the transition from forge to github, we've moved the rest of the documentation to our rst documentation.
Details: #547
Backend statistics
During the codesprint in Frankfurt a new statistics module was added for that backend that allows you to get some usefull insights
of your search installation.
- Which terms are the most frequent search terms?
- Which terms are frequently searched but deliver no result?
UX Improvements
During the codesprint several UX improvements in the backend module have been done:
Replace content element wizard icon with svg icon:
- Replace content element wizard icon with svg icon
Detail: #581
Make init connections icon use SVG:
- Adds new SVG icon for init connection
Details: #566
Backend module layout fixes
- Makes sure everything is aligned properly
- Removes some whitespace, giving the module content more room
Details: #575
Bugfix: absRefPrefix auto in cli mode with webroot different from PATH_site
When you are using absRefPrefix auto and index in cli mode and you webroot differs from PATH_site you have the possibility to configure a
webroot in the scheduler task to make absRefPrefix=auto work in this case
Details: #495
Bugfix: Keep selected site in scheduler task
When a site in the scheduler task was selected the selection could get lost.
Details: #557
Outlook
In the next release (6.0) we will focus on the integration of the latest Apache Solr Version (currently 6.1.0)
Contributors
Like always this release would not have been possible without the help from our
awesome community. These are the contributors for this release.
(patches, comments, bug reports, review, ... in alphabetical order)
- Daniel Siepmann
- Ingo Renner
- Sascha Nowak
- Steffen Ritter
- Timo Hund
- Thomas Hohn
- Thomas Scholze
Also a big thanks to our partners that have joined the EB2016 program:
- Bank CIC AG
- Bitmotion GmbH
- Citkomm services GmbH
- CS2 AG
- Cosmoblonde GmbH
- Daniz online markting
- datenwerk innovationsagentur gmbh
- die_schnittsteller GmbH
- E-magineurs
- Fernando Hernáez Lopez
- Future Connection AG
- Gernot Leitgab
- Hirsch & Wölfl GmbH
- hs-digital GmbH
- IHK Neubrandenburg
- L.N. Schaffrath DigitalMedien GmbH
- mehrwert intermediale kommunikation GmbH
- netlogix GmbH & Co. KG
- pixolith GmbH & Co. KG
- Q3i GmbH & Co. KG
- RUAG Corporate Services AG
- ST3 Elkartea
- Star Finanz-Software Entwicklung und Vertriebs GmbH
- Stefan Galinski Interndienstleistungen
- Systime A/S
- SYZYGY Deutschland GmbH
- web-vision GmbH
- websedit AG - Internetagentur
- Webstobe GmbH
- WIND Internet
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 answering 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
5.0.0 Fluid preparation / documentation
Apache Solr for TYPO3 version 5.0 released
We're happy to announce the release of Apache Solr for TYPO3 (EXT:solr) version 5.0.0. With this release we ship the requirements to use our new addon EXT:solrfluid, that allows you to render your search results with the fluid templating engine.
Beside the adaptions for solrfluid we mainly did bugfixes and cleanup in the code base. If you want to use solrfluid in your projects, you should signup a partnership with dkd (visit typo3-solr.com or call dkd +49 (0)69 - 247 52 18-0 for more information).
New in this Release
Preparing fluid support
- Adding a SearchRequest object
- Improving the SearchResultSetService
Dropping deprecated code
As announced in Version 4.0 the following methods have been removed:
- Util::getTypoScriptObject please use TypoScriptConfiguration::getObjectByPath() instead.
- Util::isValidTypoScriptPath please use TypoScriptConfiguration::isValidPath() instead.
- Util::getTypoScriptValue please use TypoScriptConfiguration::getValueByPath() instead.
- IndexQueue\Queue::getTableToIndexByIndexingConfigurationName please use TypoScriptConfiguration::getIndexQueueTableNameOrFallbackToConfigurationName instead.
- IndexQueue\Queue::getTableIndexingConfigurations please use TypoScriptConfiguration::getEnabledIndexQueueConfigurationNames instead.
- Plugin\PluginBase::search / PluginBase::getSearch / PluginBase::setSearch please use $pi->getSearchResultSetService()->getSearch() instead.
- Plugin\Results\Results::getAdditionalFilters please use $pi->getSearchResultSetService()->getAdditionalFilters() instead.
- Plugin\Results\Results::getNumberOfResultsPerPage use $pi->getSearchResultSetService()->getNumberOfResultsPerPage() instead.
- Plugin\Results\Results::getAdditionalFilters please use $pi->getSearchResultSetService()->getAdditionalFilters() instead.
- TypoScriptConfiguration::offsetGet / offsetExists / offsetSet please use TypoScriptConfiguration::getObjectByPath / isValidPath / getValueByPath instead. These functions have only been implemented for backwards compatibility in will be removed in 5.0
Dropping the class maps
Since EXT:solr 5.0 is only running on TYPO3 7.6 LTS and classmap files for backwards compatibility have been dropped. This also gives am small performance improvement for the current version.
Unify xliff files in one file per language
Because we want to use the labels in EXT:solr and EXT:solrfluid, and extbase requires to use one xliff file per language, we take the chance to streamline the language files into one file per language.
Performance improvement for TypoScriptConfiguration
Because TypoScriptConfiguration is used quite frequently, we did some performance improvements by optimizing the access to the underling array structure.
Add additionalWhereClause to SOLR_RELATION
You can now add an additionalWhereClause for SOLR_RELATION items.
Example:
plugin.tx_solr.index.queue {
record = 1
record {
table = tx_extension_domain_model_record
fields {
title = title
category_stringM = SOLR_RELATION
category_stringM {
localField = category
multiValue = 1
additionalWhereClause = pid=2
}
}
}
}
See: #426
Show devLog entries as debug message or in the TYPO3 console
You can now show the written log messages as output of the debug console in the backend or debug messages in the frontent, when you enable the following setting:
plugin.tx_solr.logging.debugDevlogOutput = 1
NOTE: $GLOBALS['TYPO3_CONF_VARS']['SYS']['devIPmask'] needs to be configured and match.
RST Documentation
We've ported the typoscript reference from the forge wiki into an rst format. At the same time we've enhanced the documentation with chapters about:
- Getting Started
- The Backend
- Logging
- FAQ section
If you want to contribute and bring the documentation one step further feel free to proof-read or provide additional parts as a pull request.
Deprecations
- Typo3Environment: The usage of ApacheSolrForTypo3\Solr\Typo3Environment is deprecated and should be removed
Outlook
In the next release (6.0) we will focus on our codesprint (11. to 13. august in frankfurt). Beside that we will focus
on issues in the issue tracker and general improvements of the codebase and documentation.
Contributors
Like always this release would not have been possible without the help from our
awesome community. These are the contributors for this release.
(patches, comments, bug reports, review, ... in alphabetical order)
- Daniel Siepmann
- Frans Saris
- Gerald Spreer
- Hendrik Nadler
- Ingo Renner
- Marc Bastian Heinrichs
- Markus Friedrich
- Olivier Dobberkau
- Patrick Oberdorf
- Peter Kraume
- Sascha Löffler
- Timo Hund
Also a big thanks to our partners that have joined the EB2016 program:
- Bank CIC AG
- CS2 AG
- Cosmoblone GmbH
- Daniz online markting
- datenwerk innovationsagentur gmbh
- die_schnittsteller GmbH
- E-magineurs
- Fernando Hernáez Lopez
- Future Connection AG
- Hirsch & Wölfl GmbH
- hs-digital GmbH
- L.N. Schaffrath DigitalMedien GmbH
- pixolith GmbH & Co. KG
- Q3i GmbH & Co. KG
- RUAG Corporate Services AG
- ST3 Elkartea
- Star Finanz-Software Entwicklung und Vertriebs GmbH
- Stefan Galinski Interndienstleistungen
- Systime A/S
- websedit AG - Internetagentur
- Webstobe GmbH
- web-vision 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 answering 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
4.0.2 - Maintenance Release
Apache Solr for TYPO3 version 4.0.2 released
This is a bugfix and maintenance release that contains the following fixes:
- [BUGFIX] Fix fallback path of defaultImagePrefix for indicator icon
- [BUGFIX] Fix Runtime Deprecation Notice from flashMessageQueue (#363)
- [BUGFIX] Parent plugin is not passed to SearchResultSetService (#366)
- [BUGFIX] Fix indentation and typo in typoscript
Contributors
Like always this release would not have been possible without the help from our
awesome community. These are the contributors for this release.
(patches, comments, bug reports, review, ... in alphabetical order)
- Gerald Spreer
- Markus Friedrich
- Peter Kraume
- Timo Schmidt
4.0.0 - Preparation for Fluid Support - 7.6 LTS only and TYPO3 8.0 / PHP 7.0 Preparation
Apache Solr for TYPO3 version 4.0 released
We're happy to announce the release of Apache Solr for TYPO3 (EXT:solr)
version 4.0.0. With this release we now support TYPO3 CMS versions 7.6LTS
together with Apache Solr version 4.10.
At the same time we also started making the extension work with TYPO3 8.
New in this Release
Support of TYPO3 7.6 LTS and TYPO3 8.0 (Dropping Support of 6.2 LTS)
To stay up-to-date with the TYPO3 core we decided to drop the support of 6.2 LTS
and support 7.6 LTS only. We also made sure that EXT:solr works
with TYPO3 8.0, this will be an ongoing effort until the LTS release of TYPO3 8.
Until then you may experience occasional bugs as we try to keep up with the
core's development.
Improve the Test Coverage for Fluid Integration and Refactoring
During the preparation for the upcoming fluid integration we used the chance to
refactor the frontend part of the extension.
What we did here:
- Move the logic from the Result/Search and FrequentSearches plugins to service
classes in order to have the possibility to use them in different places
(e.g. other controllers) - Introduce a SearchResultSet and SearchResultSetService to improve the object
model of search results
TypoScriptConfiguration Object and Streamlining of Configuration usage
TypoScript configuration is used in many places and accessing it with an object
has some advantages:
- Merging configuration with Flexforms and other sources is easier
- We have a single point of access for configuration
- We can move and remove
isset()
/is_array()
/if..else
logic to read and evaluate
configuration into this object and make the code that is using it more readable - Since the implementation is a cross cutting concern for the whole extension,
it can be used to improve the coverage of integration tests for all parts - By reading the annotations later it could be used to automatically generate
a TypoScript reference
During the preparation of the current release we implemented this
TypoScriptConfiguration object and replaced all parts in the scope of EXT:solr
Migration:
For backwards compatibility the TypoScriptConfiguration object can be used with
array access operators. If you want to read the configuration you can use the
speaking method name for a configuration path or use the methods
getValueByPath()
or getObjectByPath()
.
PHP 7.0 ready
During the development we made sure that the code of EXT:solr works with PHP 7.0.
General Changes
Beside the major changes that have been mentioned before, there are a few minor
changes that might be interesting:
ExcludeContentByClass
You can now use a new TypoScript setting plugin.tx_solr.index.queue.pages.excludeContentByClass
.
e.g.
plugin.tx_solr.index.queue.pages.excludeContentByClass = removeme
Removal of q.op Parameter from solrconfig.xml
Since solrconfig.xml contained a default value for the mm
(MinimumMatch) and
q.op
parameters and it does not make sense to have both at the same time for
eDismax we removed the q.op
parameter from the default configuration to avoid
confusion.
Allow Indexing from Backend Module
To avoid switching from the backend module to scheduler and back, we added a
button to do a simple indexing run with just 10 documents.
Resolving Overlays of SOLR_RELATION objects
The SOLR_RELATION
object is now taking an overlay into account when relations
are resolved. This allows you to resolve different relations from a translated
entity for an original entity.
Auto-Correct in Default Template
The goal of the search is to keep the visitor on the site and provide the best
results for them with the smallest possible interaction.
There was a feature in EXT:solr (searchUsingSpellCheckerSuggestion) that could
be used to automatically trigger a search using the spellchecker's suggestions
when a search with the original term did not retrieve any results. To simplify
the integration we added the needed markup to the default templates so that you
now just need to enable the feature and use it with the shipped default template.
How to use it?
plugin.tx_solr.search.spellchecking.searchUsingSpellCheckerSuggestion = 1
Use the shipped default templates or add the following snippet to your template (between
<!-- ###SOLR_SEARCH_NO_RESULTS### begin -->
and <!-- ###SOLR_SEARCH_NO_RESULTS### end -->
:
<div class="tx-solr-search-suggestion_results">
<!-- ###IF:###NO_RESULTS.HAS_SUGGESTION_RESULTS###|==|1### begin -->
###NO_RESULTS.SUGGESTION_RESULTS###
<!-- ###IF:###NO_RESULTS.HAS_SUGGESTION_RESULTS###|==|1### end -->
</div>
Dynamic Field Type for Spellchecking
For spellchecking we had no dynamic field type before. Since 4.0.0 we now ship
the dynamic field types *_textSpellS
and *_textSpellM
to allow you to
easily define fields for spell checking.
Usage of Styles and Modals from TYPO3 7 LTS
To keep the styling of the backend up-to-date and use the new JavaScript modals
we updated the backend module to use these new features.
Add Support of FastVectorHighlighter
Highlighting can be slow for large text documents - f.e. created when
indexing pdf documents - and slow down search queries. To help prevent this
issue we added support for Solr's FastVectorHighlighter
The FastVectorHighlighter will now be used by default if fragmentSize
is set
to at least 18 (this is required by the FastVectorHighlighter to work).
Use Caching Framework in Util::getConfigurationFromPageId
Configuration is retrieved and evaluated many times during indexing. Thus it
made sense to use the TYPO3 caching framework to cache these expensive
operations and improve their performance.
Use Xliff as Translation Format
Translation files have been migrated to the xliff format. The EXT:solr team
would be happy if you contribute missing translations.
Resolve affected pages when "extendToSubpages" is set and "hidden" flag is changed
The Record Monitor is now able to evaluate the "hidden" flag on subpages when
the extendToSubpages
page property is set or unset.
Add signal after IndexQueueWorkerTask::indexItems
You can now register for a new signal "afterIndexItems".
Bugfixes
Beside the improvements mentioned before many smaller bugs have been fixed in
this release as well.
Installation and Updating
This version of EXT:solr is based on the same Apache Solr Version (4.10) as the
last version so an update for the Solr server itself is not needed.
However, a few modifications to the schema and Solr configuration where made.
Please make sure to use the latest solrconfig.xml and schema versions.
You can always check TYPO3's system status report to see whether your setup
meets the requirements and is up-to-date to be used with EXT:solr.
Deprecations
The following functions and methods have been marked as deprecated and will be
removed in version 5.0
- Util::getTypoScriptObject please use TypoScriptConfiguration::getObjectByPath() instead.
- Util::isValidTypoScriptPath please use TypoScriptConfiguration::isValidPath() instead.
- Util::getTypoScriptValue please use TypoScriptConfiguration::getValueByPath() instead.
- IndexQueue\Queue::getTableToIndexByIndexingConfigurationName please use TypoScriptConfiguration::getIndexQueueTableNameOrFallbackToConfigurationName instead.
- IndexQueue\Queue::getTableIndexingConfigurations please use TypoScriptConfiguration::getEnabledIndexQueueConfigurationNames instead.
- Plugin\PluginBase::search / PluginBase::getSearch / PluginBase::setSearch please use $pi->getSearchResultSetService()->getSearch() instead.
- Plugin\Results\Results::getAdditionalFilters please use $pi->getSearchResultSetService()->getAdditionalFilters() instead.
- Plugin\Results\Results::getNumberOfResultsPerPage use $pi->getSearchResultSetService()->getNumberOfResultsPerPage() instead.
- Plugin\Results\Results::getAdditionalFilters please use $pi->getSearchResultSetService()->getAdditionalFilters() instead.
- TypoScriptConfiguration::offsetGet / offsetExists / offsetSet please use TypoScriptConfiguration::getObjectByPath / isValidPath / getValueByPath instead. These functions have only been implemented for backwards compatibility in will be removed in 5.0
Outlook
The next release (5.0) will focus on the needed refactorings to allow implementing
fluid template rendering. At the same time we will ship the first version of our
new extension "solrfluid" to our EAP partners.
Contributors
Like always this release would not have been possible without the help from our
awesome community. These are the contributors for this release.
(patches, comments, bug reports, review, ... in alphabetical order)
- Dmitry Dulepov
- Florian Seirer
- Frank Nägler
- Frans Saris
- Ingo Pfennigstorf
- Ingo Renner
- Marc Bastian Heinrichs
- Markus Friedrich
- Markus Kobligk
- Mickael Vanclooster
- Olivier Dobberkau
- Sascha Egerer
- Timo Schmidt
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 answering 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
3.1.2 - Maintenance Release
This release is a maintenance release for the 3.1 branch. Since EXT:solr 4.0.0 will require TYPO3 7.6 LTS or higher this release provides bugfixes for users on TYPO3 6.2 LTS
- Provide needed adjustments to use replaced search content element:
- Index Inspector not working:
- JavaScript files get lost if concatenation and compression are enabled
- Solr doesn't support config.absRefPrefix = auto
- Re-Index after deleting a content element
- Support phrases inside a query string
Thx to the following contributors for patches, reviews and backports:
- Ingo Renner
- Lorenz Ulrich
- Markus Friedrich
- Markus Kobligk
- Timo Schmidt