The SolrCloud Search Service Adapter connects the Intershop Commerce Management (ICM) with a Solr server that runs in cloud mode. The search index configuration and maintenance in the ICM back office uses the Schema- and ConfigSet-REST-APIs provided by the newer Solr server version. Thus, the Solr Server is separate and independent of the ICM application server cluster.
Intershop Commerce Management | SolrCloud Search Service Adapter | Solr Server |
---|---|---|
7.10.31+ | 3.0.0 - 3.0.1 | 8.2 - 8.6.3 |
7.10.31 - 7.10.37 | 3.0.3 - 3.0.7 | 8.6.3 - 8.11 |
7.10.38+ | 3.1.0 - 3.6.3 | 8.11 |
7.10.41.0+ | 3.8.0 | 8.11 |
Due to Solr™ Security News - 2021-12-10, Apache Solr affected by Apache Log4J CVE-2021-44228 it is recommended to use Solr version >=8.11.1 or to follow the mitigation advice given in the security news article.
There is a backward compatibility issue with SolrJ (SOLR-15145). Solr 8.6.3/Solr 8.7+ requires additional configuration: (ISSEA-167 - Can't Create a Configset - Solr Cloud 8.6.3 8.7).
The listed Solr server versions were tested to work with the listed SolrCloud Adapter version. In general, minor and patch version upgrades of the Solr server are usually compatible with the adapter.
The following table lists the cartridges contained in the SolrCloud Adapter:
Cartridge | Description | Required |
---|---|---|
ac_solr_cloud | The main implementation cartridge of the adapter defining and registering the search service. | |
ac_solr_cloud_bo | Additional functionality for the Commerce Management application. It provides additional configuration options for the index management, especially for suggest and spell-check. | |
solrcloud_config | Additional configuration to be deployed to share. |
Please see Cookbook - Deployment of Solr Search Adapters on how to set up your project.
The SolrCloud Search Service Adapter requires a Solr server that runs in cloud mode. Please see Guide - Deployment Solr Cloud Server on how to set up a Solr server for development or production. This guide also provides information on how to configure ICM to use a Solr server.
Solr server versions higher than 8.6.2 require setting up authentication or enabling upload of configsets from the ICM application server.
solr.in.sh
SOLR_OPTS="$SOLR_OPTS -Dsolr.disableConfigSetsCreateAuthChecks=true"
The data replication of indexes has changed with this adapter implementation. The standard ICM file replication is not used anymore to replicate the index data. Instead, the adapter comes with its own replication decorator that uses the backup/restore collection API functionality of Solr. Please see Guide - Solr Replication for the description and configuration of the index replication with the SolrCloud server.
Data replication with a SolrCloud cluster requires mounting a shared file system at the same path on each Solr node. The ICM must configure the property solr.cloudBackupLocation
to point to this shared location.
Solr Server version 8.6.3 or higher in conjunction with data replication requires setting the backup location as an allowed path for the Solr server cluster. You can specify the allowed paths by setting the system property via environment in the startup script:
solr.in.sh
SOLR_OPTS="$SOLR_OPTS -Dsolr.allowPaths=/mnt/solr_backup"
ID | Title |
---|---|
Use solrj 8.11.4 in Solr Adapter | |
Add MasterSKU attribute to product index by default | |
Rephrasing of Solr error message | |
Delete corrupted configset on Solr replication restore |
ID | Title |
---|---|
Move Solr schema synchronization to configuration saving/indexing |
This release is built with ICM 7.10.41.0 and contains the same bug fixes as release 3.6.3.
ID | Title |
---|---|
No update of ish-config.xml after search index config changes |
ID | Title |
---|---|
No update of ish-config.xml after search index config changes |
ID | Title |
---|---|
ConcurrentModificationException in BackupAndRestoreSolrCloudIndexesDecorator during staging |
ID | Title |
---|---|
Object suggest index build - offline content index causes NullPointerException |
ID | Title |
---|---|
Support multiple value attributes in object suggest search indexing | |
Improve DELETE request handling |
ID | Title |
---|---|
SKU is not usable as separate entry in object suggest type search |
ID | Title |
---|---|
Automatic search index update after product deletion via back office is not reflected in search index list | |
Restore collection fails with ServerException | |
Concurrent upload of default configset fails with "configuration already exists in zookeeper" |
When using custom code that extends or overrides the BackupAndRestoreSolrCloudIndexesDecorator you need to be aware of the changed signature of the switchAliases method. The method switchAliases(HashMap<Domain, Set<String>> processedIndexesByDomain)
is deprecated and the new method switchAliases(Map<Domain, Set<String>> processedIndexesByDomain)
is used now (87520).
A new property solr.RebuildInconsistentIndexes
controls the behavior with inconsistent indexes during the replication of indexes. If the property is set to true
, inconsistent indexes are attempted to be rebuilt during the replication. The default is false
, so the replication will fail if inconsistent indexes are detected as it was the default behavior before (86951).
ID | Title |
---|---|
Parallelize restore & backup of search indexes during replication | |
Rebuild inconsistent search indexes during replication |
ID | Title |
---|---|
Replication fails on BackupAndRestoreSolrCloudIndexesDecorator.onPostReplicationHook due to Solr Cloud OverseerCollectionMessageHandler.waitForCoreNodeName method exception |
ID | Title |
---|---|
Wrong collection alias set when entry in aliases is missing before replication but a collection exists | |
Collection named like the alias is not deleted | |
Solr Cloud adapter code throws "Closing JDBC connection via finalize method" exception | |
‘Index locked’ message is missing |
Fix 82573 required changing the signature of method public void addHit
in class om.intershop.adapter.search_solr.internal.objectsuggest.SuggestCollector
from public void addHit(SolrInputDocument inputDoc)
to public void addHit(SolrInputDocument inputDoc, Object docFlagValue)
. Custom implementations that extend this class need to pass the onlineFlag document value as additional parameter to correctly count online hits only.
ID | Title |
---|---|
Asynchronous multi-threaded sending of SolrInputDocument batches | |
Upgrade SolrCloud adapter to use SolrJ 8.11.2 |
ID | Title |
---|---|
Object suggest index counts offline products | |
SolrFilterAttributeEntry endless loop in getLevel with invalid category paths | |
Index build fails with 'collection not found' |
Synonyms are uploaded as full synonyms via _schema_analysis_synonyms_default.json if and only if the Solr server has enabled authentication.
This is checked by the Solr Adapter. An Upload request is used instead of multiple requests if the needed single operations exceed 15 deletes (81264).
ID | Title |
---|---|
SolrFilterAttributeEntry endless loop in getLevel with invalid category paths | |
Index build fails with 'collection not found' | |
Deleting index from back office does not delete Solr configset | |
Synonyms with a keyword containing a '%' percent sign cannot be deleted | |
Synonyms import can cause read timeout |
ID | Title |
---|---|
Undefined fields after replication causing unavailability of storefront on Live | |
Adding orchanging Solr synonyms in ICM back office can lead to error pages |
ID | Title |
---|---|
Inconsistent search results after search index replication in Solr cluster with multiple nodes/replicas | |
Solr index build creates too much "info" logs |
ID | Title |
---|---|
Remove deprecated ProductAV2 data provider | |
A Limit Count other than "-1" for the "Category" filter causes catalogs in the storefront to disappear | |
ManagedSynonymGraphFilterFactory not initialized correctly after replication of index to Live | |
[IS-22341] Solr: No Show all/Show less generated for category filter |
ID | Title |
---|---|
Change of query stop words does not reload the affected Solr collection | |
Updating synonym handling issues in back office | |
Content search in storefront leads to missing titles for helpdesk topics |
The Solr server connection configuration can use an alternative property to connect to the server without using the Zookeeper host list. This connection property can contain a single common service endpoint (e.g., a Solr Server Kubernetes setup with Solr Operator) or a list of Solr server nodes.
ac_solr_cloud.properties
# A Solr server URL or a list of Solr server URLs running in SolrCloud mode (separated by ',' or ';') # Default: none - if not present, solr.zooKeeperHostList is used #solr.cloudSolrServerURLs=http://localhost:8983/solr
The URLs must start with the protocol (http/https) and must include the context path.(/solr)
The deployment of the Solr cloud adapter does not overwrite the staging.properties to add the decorator. The decorator is bound to the processor via Guice framework now.
We updated the used client library to current version 8.11.1. Older versions will have conflicts with the dependencies of ICM vs SolrJ dependencies.
ID | Title |
---|---|
Pagination of variation products does not work (via product REST resource) | |
Performance of Solr queries with |
The default behavior of counting filter entries for product variations has changed. Due to the heavy performance impact of the group.facet parameter with a higher number of products and higher number of facets, the parameter is not used anymore to calculate the counts. This will affect search index configurations indexing product variations with GroupMasterUUID. In addition, group.facet has also limitations with calculating counts for numeric data types.
However, to retain the previous behavior, it is recommended to add the parameter to the Solr query with code that extends the default SolrIndexExtension implementation via Guice.
This release is based upon ICM 7.10.38 LTS and is not compatible anymore with 7.10.32 LTS releases.
The used query parser changed from Dismax to EDismax. Queries can directly use extended syntax such as wildcards and boolean operators. Fielded search and multi-word synonyms are supported now.
Full index build (re-build) now uses a separate collection to fully build the index beside the currently used online index. Aliasing is used to switch over atomically to the newly built collection. The collection naming scheme has changed to include the time suffix: <cluster-index-prefix><domain-name>-<index-id><yyyyMMddHHmmss>
. The previous collection is kept and is deleted after a new successful index re-build. This allows to switch back the alias to the previous collection (manually). Please note as there are now two collections on the Solr server for one index on the ICM side, the resource usage will be higher on the Solr server side.
ID | Title |
---|---|
Make the Solr index build job more robust (Aliasing + Time Suffixed Collections) | |
[ISSEA-175] Replace dismax with edismax |
ID | Title |
---|---|
Error message in Solr log: <jmx> is no longer supported | |
Warn message in Solr Adapter log "FieldType SpatialRecursivePrefixTreeFieldType does not allow omitNorms to be specified in schema" | |
[IS-32405] Solr Adapter reads all collections from Solr |
Release 3.1 also contains bug fixes from 3.0.x releases up to 3.0.5.
ID | Title |
---|---|
ManagedSynonymGraphFilterFactory not initialized correctly after replication of index to Live |
ID | Title |
---|---|
Change of query stop words does not reload the affected Solr collection | |
Updating synonym handling issues in back office |
To fix issues while closing SolrClient
objects in a cache implemented with the common ICM cache framework (71243 AlreadyClosedException), the component SolrClientCache
is no longer used and is deprecated.
If customized code is used, SolrClientCache
must be replaced with SolrServerProvider
instead.
ID | Title |
---|---|
Suggested search terms disappear again due to wrong default target data type of QueryTerm in SFObject Search Suggest Solr Index | |
AlreadyClosedException when updating Solr search index | |
New Java product search fallback to query search does not work |
Replication for New Search Index/EDIT Deleted Search Index/LIVE fails | |
Inconsistent Search Results after Search Index Replication in Solr Cluster with Multiple Nodes/Replicas |
Index replication fails - invalid backup - Solr 8.9.0 | |
Replicated Solr schema changes are not visible - Solr 8.8+ | |
Initial index replication fails with 'Collection Not Found' |
NPE in CatalogFilterViewingHelper::isCurrentlyVisible in case the given CatalogCategory is "null" | |
[ISSEA-188] BackupAndRestoreDecorator is not added to the SearchIndexesStagingProcessor | |
[ISSEA-191] Replication failure - deletion of not existing configset fails |
This release is dedicated to ICM releases 7.10.31 and higher (Tomcat 9 Release). The adapter release contains the required dependency changes for Tomcat 9. There are no functional or API changes in the adapter compared to adapter release 2.3.4.