Broadleaf Microservices
  • v1.0.0-latest-prod

Search Services Release Notes for 2.2.0-GA

Tip
The 2.x versions are Spring Boot 3 compatible.

New Features & Notable Changes

Support Relevancy Rules

Overview

Within Search, the ability to boost documents based on certain field criteria was added. This functionality is supported with the new domain, Relevancy Rules, and is supported per Search Settings. This allows the Relevancy Rules to be configured per Application & settings context (Admin or Storefront).

Additionally, the ability to see boosted scores for Solr documents was added via a parameter on the Search Request.

For further documentation, see:

Permissions

New Permissions are required for working with the new domain in the Admin.

Note
This step is not necessary if running Project Initializer’s data module
To be run against the Auth schema.
-- Scopes
INSERT INTO BLC_SECURITY_SCOPE (ID, NAME, OPEN) VALUES ('-511', 'RELEVANCY_RULE', 'N');
INSERT INTO BLC_SECURITY_SCOPE (ID, NAME, OPEN) VALUES ('-512', 'RELEVANCY_RULE_GROUP', 'N');

-- Permissions
INSERT INTO BLC_USER_PERMISSION (ID, ARCHIVED, LAST_UPDATED, NAME, IS_ACCOUNT_PERM, USER_ASSIGNABLE) VALUES ('-515', 'N', '1970-01-01 00:00:00.000000', 'ALL_RELEVANCY_RULE', 'N', 'Y');
INSERT INTO BLC_USER_PERMISSION (ID, ARCHIVED, LAST_UPDATED, NAME, IS_ACCOUNT_PERM, USER_ASSIGNABLE) VALUES ('-516', 'N', '1970-01-01 00:00:00.000000', 'READ_RELEVANCY_RULE', 'N', 'Y');
INSERT INTO BLC_USER_PERMISSION (ID, ARCHIVED, LAST_UPDATED, NAME, IS_ACCOUNT_PERM, USER_ASSIGNABLE) VALUES ('-517', 'N', '1970-01-01 00:00:00.000000', 'ALL_RELEVANCY_RULE_GROUP', 'N', 'Y');
INSERT INTO BLC_USER_PERMISSION (ID, ARCHIVED, LAST_UPDATED, NAME, IS_ACCOUNT_PERM, USER_ASSIGNABLE) VALUES ('-518', 'N', '1970-01-01 00:00:00.000000', 'READ_RELEVANCY_RULE_GROUP', 'N', 'Y');

-- Permissions Scopes
INSERT INTO BLC_PERMISSION_SCOPE (ID, PERMISSION, IS_PERMISSION_ROOT, SCOPE_ID) VALUES ('-511', 'RELEVANCY_RULE', 'Y', '-511');
INSERT INTO BLC_PERMISSION_SCOPE (ID, PERMISSION, IS_PERMISSION_ROOT, SCOPE_ID) VALUES ('-512', 'RELEVANCY_RULE_GROUP', 'Y', '-512');

-- Role Permissions
-- Full Access
INSERT INTO BLC_ROLE_PERMISSION_XREF (ROLE_ID, PERMISSION_ID) VALUES ('-2', '-515');
INSERT INTO BLC_ROLE_PERMISSION_XREF (ROLE_ID, PERMISSION_ID) VALUES ('-2', '-517');
-- Partial Access
INSERT INTO BLC_ROLE_PERMISSION_XREF (ROLE_ID, PERMISSION_ID) VALUES ('-1', '-516');
INSERT INTO BLC_ROLE_PERMISSION_XREF (ROLE_ID, PERMISSION_ID) VALUES ('-1', '-518');

-- Client Scopes
INSERT INTO BLC_CLIENT_SCOPES (ID, SCOPE) VALUES ('openapi', 'RELEVANCY_RULE');
INSERT INTO BLC_CLIENT_SCOPES (ID, SCOPE) VALUES ('openapi', 'RELEVANCY_RULE_GROUP');

-- Client Permissions
INSERT INTO BLC_CLIENT_PERMISSIONS (ID, PERMISSION) VALUES ('openapi', 'ALL_RELEVANCY_RULE');
INSERT INTO BLC_CLIENT_PERMISSIONS (ID, PERMISSION) VALUES ('openapi', 'ALL_RELEVANCY_RULE_GROUP');

Recommendation Engine

  • Add backend support in Search for handling the Recommendation Engine.

    • This introduces new domains and inter-service calls utilized by the Recommendation Engine to be utilized in search operation e.g. the SearchRecommendation domain or the ExternalRecommendationProvider. See the Recommendation Engine documentation for more details.

Additional New Features & Notable Changes

  • Automatically delete Facets and Sort options after deleting a related Field.

    • The broadleaf.search.auto-delete-related-search-entities=true property is used to enable or disable this feature. It is enabled by default.

  • Added a configurable delay between start times of indexer threads to spline CPU spikes during the initial launch of index thread executors

    • The broadleaf.indexer.pause-between-threads-start property is introduced, default is 2000 ms

  • Added additional customizability around Field Sorts.

    • Field Sorts can now be individually labeled for ascending and descending options and can be restricted to only ascending or only descending.

  • Added additional event handling for indexing products so they can correctly show up in the back end sorting views before promoting.

Enhancements

  • Added a delay between the start of indexing threads to reduce overlap of threads occurring at the same time.

  • Replaced instances of isForceCatalogForFetch with isForceFilterByCatalogIncludeInheritance due to deprecation.

    • This should be updated in any customizations when upgrading to this version.

  • Added logic and changelogs to allow Search to utilize applicationName and apply narrowing to it.

    • This is mainly utilized to help functionality around Tenant level order views.

    • Updates the BLC_FIELD table changelog so the entries can correctly be populated.

  • Added an optimization which determines if microservice interlink requests should be optimized with a direct method call when the targeted service is colocated in the same flexpackage. This saves on expenses related to socket creation, json serialization/deserialization, and SSL encryption and handshake.

    • Utilizes an optional property broadleaf.indexer.catalog.service.loopbackOptimizationEnabled which is enabled by default.

    • This is must be paired with a property outlined in 2.0.5 MicroExtensionCommon.

Bug Fixes

  • Fixed an issue where pending marketplace catalogs would not surface products in the Admin application for the parent.

  • Removed wildcard characters from groupIndexableType equals filters to prevent the filter from acting as a "like" instead of "equals".

  • Fixed a bug where a decoder would throw an error when encountering a % for a Solr filter.

  • Added the ability to override locale in search requests to fix an issue where translations would not show up for Facets in the Admin list grids.

  • Fixed a NPE issue in the DefaultDocumentBuilderHelper where a rootObject could be null and unchecked.

  • Fix search of products from marketplace catalogs with pending status in admin and storefront context