Public Release Note - SolrCloud Search Service Adapter 3

1 Introduction

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.

1.1 References

1.2 Version Information and Dependencies

Intershop Commerce ManagementSolrCloud Search Service AdapterSolr Server
7.10.31+3.0.0 - 3.0.18.2 - 8.6.3
7.10.31 - 7.10.373.0.3 - 3.0.68.6.3 - 8.11
7.10.38+3.2.18.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 advices 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:

CartridgeDescriptionRequired
ac_solr_cloudThe main implementation cartridge of the adapter defining and registering the search service.(tick)
ac_solr_cloud_boAdditional functionality for the Commerce Management application. It provides additional configuration options for the index management, especially for suggest and spell-check.(tick)
solrcloud_configAdditional configuration to be deployed to share.(tick)

2 Deployment

Please see the 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 the 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 config sets from the ICM application server.

solr.in.sh
SOLR_OPTS="$SOLR_OPTS -Dsolr.disableConfigSetsCreateAuthChecks=true"

3 Data Replication

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.

Note

Data replication with a SolrCloud cluster requires to mount 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 a system property via environment in the startup script:

solr.in.sh
SOLR_OPTS="$SOLR_OPTS -Dsolr.allowPaths=/mnt/solr_backup"

4 Changelog

4.1 Release 3.2.1

4.1.1 Bugfixes

IDTitle
75911Change of query stop words does not reload the affected Solr collection
74958Updating synonym handling issues in back office
49953Content search in storefront leads to missing titles for helpdesk topics

4.2 Release 3.2.0

4.2.1 Features

4.2.1.1 Configuration of Solr Cloud Server Connection

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)

4.2.1.2 BackupAndRestoreDecorator is bound via Guice (74700)

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.

4.2.1.3 Updated SolrJ Client Library

We updated the used client library to the current version 8.11.1. Older versions will have conflicts with the dependencies of ICM vs SolrJ dependencies.

4.2.2 Bugfixes

IDTitle
74517Pagination of variation products does not work (via product REST resource)
74431Performance of Solr queries with group.facet=true is bad

4.2.2.1 Performance of Result Grouping Queries (74431)

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, the group.facet has also limitations with calculating counts for numeric data types.

However, to retain the previous behavior it is possible to configure the defaults parameter list in the search request handler in the solrconfig.xml A commented section is prepared in the provided common solrconfig.xml.

solrcloud/default/conf/solrconfig.xml
      <!-- ISH:group.facet
      <str name="group.facet">true</str>  
      <int name="facet.threads">4</int>  
      ISH:group.facet /-->

Deployment snippet to re-enable group.facet=true

Deployment Filter Example
	fullContent('ReEnableGroupFacet') {
		dir = target.shareDirectory
		include 'system/config/cluster/solrcloud/default/conf/solrconfig.xml'
		action { StringBuilder content -> content.insert(content.indexOf('<!-- ISH:group.facet') + 20, ' -->').insert(content.indexOf('ISH:group.facet /-->'), '<!-- ') }
	}

4.3 Release 3.1.0

This release is based upon ICM 7.10.38 LTS and is not compatible anymore to 7.10.32 LTS releases.

4.3.1 Features

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 a time suffix: <cluster-index-prefix><domain-name>-<index-id><yyyyMMddHHmmss>. The previous collection is kept and is deleted after a new sucessful index re-build. This allows to switch back the alias to the previous collection (manually). Please note as there are now two collections at the Solr server for one index at ICM side, the resource usage will be higher at the Solr server side.


IDTitle
70384Make the Solr index build job more robust (Aliasing + Time Suffixed Collections)
60289[ISSEA-175] Replace dismax with edismax

4.3.2 Bugfixes

IDTitle
69807Error message in Solr log: <jmx> is no longer supported
69805Warn message in Solr Adapter log "FieldType SpatialRecursivePrefixTreeFieldType does not allow omitNorms to be specified in schema"
61994[IS-32405] Solr Adapter reads all collections from Solr

Release 3.1 also contains the bug fixes from 3.0.x releases up to 3.0.5

4.4 Release 3.0.6

4.4.1 Bugfixes

IDTitle
75911Change of query stop words does not reload the affected Solr collection
74958Updating synonym handling issues in back office

4.5 Release 3.0.5

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.

4.5.1 Bugfixes

IDTitle
70612Suggested search terms disappear again due to wrong default target data type of QueryTerm in SFObject Search Suggest Solr Index
71243AlreadyClosedException when updating Solr search index
71440New Java product search fallback to query search does not work

4.6 Release 3.0.4

4.6.1 Bugfixes

70139Replication for New Search Index/EDIT Deleted Search Index/LIVE fails
70256Inconsistent Search Results after Search Index Replication in Solr Cluster with Multiple Nodes/Replicas

4.7 Release 3.0.3

4.7.1  Bugfixes

64443Index replication fails - invalid backup - Solr 8.9.0
65087Replicated Solr schema changes are not visible - Solr 8.8+
69230Initial index replication fails with 'Collection Not Found'

4.8 Release 3.0.1

4.8.1 Bugfixes

64594NPE in CatalogFilterViewingHelper::isCurrentlyVisible in case the given CatalogCategory is "null"
63472[ISSEA-188] BackupAndRestoreDecorator is not added to the SearchIndexesStagingProcessor
63822

[ISSEA-191] Replication failure - deletion of not existing configset fails

4.9 Release 3.0.0

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 the adapter release 2.3.4.

Disclaimer

The information provided in the Knowledge Base may not be applicable to all systems and situations. Intershop Communications will not be liable to any party for any direct or indirect damages resulting from the use of the Customer Support section of the Intershop Corporate Web site, including, without limitation, any lost profits, business interruption, loss of programs or other data on your information handling system.

Customer Support
Knowledge Base
Product Resources
Tickets