Important note: These upgrade notes span Fredhopper Discovery Platform versions 24.1.0 - 24.3.0.
FAS 24.3.0 Introduction
Fredhopper Discovery Platform 24.3.0 is compatible with previous releases.
FAS 24.2.0 Introduction
- Upgrading from FAS 24.1.0: No special steps required.
- Upgrading from FAS version 23.4.2: follow FAS 24.1.0 upgrade and downgrade.
- Upgrading from older FAS versions: upgrade first to 23.4.2, then to this release.
- This release is compatible with CRU 24.1.1. Previous versions of CRU are not supported.
FAS 24.1.0 upgrade and downgrade
FAS 24.1.0 release is now based on Java 21. Therefore, the usual procedure for FAS upgrades and downgrades is no longer effective. A specific upgrade/downgrade procedure for this release has been developed by team Titan and shared with the Customer Service team as well as the Cloud Operations team. The documentation is available here.
FAS Extensions
FAS 24.1.0 release is now based on Java 21. Once upgrading to this version, all current FAS extensions should be upgraded to their respective versions for Java 21 too. More information and list of supported FAS extensions versions can be found here.
List of supported extensions on FAS 24.1 are reported in the following page. Note that all the extensions have version bumped to 2.0, with the exception of qps-collectd-extension which is 3.0.
Extension |
version for FAS 24.1 / JDK 21 |
|---|---|
| ai-search-component | 2.0 |
| alternative-search-campaign-filter | 2.0 |
| attribute-select-campaign-filter | 2.0 |
| attribute-selector-function | 2.0 |
| attribute-similarity-campaign-filter | 2.0 |
| compatibility-util | 2.0 |
| config-copy | 2.0 |
| fredhopper-support-access | 2.0 |
| jvm-metrics-monitor | 2.0 |
| mark-function | 2.0 |
|
dependency (must be in |
3.0 ← note the major version is 3 |
| qps-collectd-extension-fas | 3.0 ← note the major version is 3 |
| query-based-attribute-campaign-filter | 2.0 |
| random-select-campaign-filter | 2.0 |
| response-storage-api | 2.0 |
| response-storage-redis | 2.0 |
| s3-dependencies | 2.0 |
| url-item-order-function | 2.0 |
| white-list-id-campaign-filter | 2.0 |
Configuration of decimal and group separator globally and per locale
It is now possible to configure decimal and group separator for numbers when rendering numeric ranges in Preview Pages. The feature overrides default behavior and can be configured globally or for specific locale(s). The configuration can be found in the system.xml file under the /com/fredhopper/browser/SimpleDecimalFormat node.
Global values can be specified directly under the /com/fredhopper/browser/SimpleDecimalFormat node, while locale specific values can be defined under the /com/fredhopper/browser/SimpleDecimalFormat/<locale> node.
Example:
<node name="SimpleDecimalFormat">
<map>
<!-- Use this value to provide global specific decimal/grouping separator when formatting float values.
If not specified, the value will be provided by DecimalFormatSymbols.getInstance(locale) implementation -->
<entry key="decimal-separator" value="" />
<entry key="grouping-separator" value="" />
</map>
<node name="en_DE">
<map>
<!-- Use this value to provide locale specific decimal/grouping separator when formatting float values
If not specified, global ones described above will be tried. -->
<entry key="decimal-separator" value="" />
<entry key="grouping-separator" value="" />
</map>
</node>
</node>This feature can be used to handle issues arising from any differences in rendering numbers between Java 8 and Java 21.
Simple relational search based on word count
The simple relational search is relevant for customers with variant values that contain multiple words (e.g. more than 5, which is generally discouraged). This option is determined by the ratio of search tokens found to the maximum number of search tokens in the query that were matched by a value of this attribute. As usual, this option works in combination with relational-target-weight.
Example:
<node name="com">
<map />
<node name="fredhopper">
<map />
<node name="search">
<map/>
<node name="relational">
<map>
<entry key="relational-target-weight" value="100000000.0"/>
<entry key="refined-relational-targets" value="wordcount"/>
</map>
</node>
</node>
</node>
</node>Optional link to XO for easy access
Added possibility to configure the XO product link in system.xml under the node /com/fredhopper/bm/xo.
Example:
<node name="xo">
<map>
<entry key="xoLink" value="<link to XO product>"/>
</map>
</node>Breaking change for some locale codes
Since Java 17, some locale codes are handled differently. Here is the description from Java 17 release notes:
➜ ISO 639 Language Codes for Hebrew/Indonesian/Yiddish
Historically, Java has used old/obsolete ISO 639 language codes for Hebrew/Indonesian/Yiddish languages to maintain compatibility. From Java 17, the default codes are the current codes. For example, "he" is now the language code for "Hebrew" instead of "iw". A new system property has also been introduced to revert to the legacy behavior. If
-Djava.locale.useOldISOCodes=trueis specified on the command line, it behaves the same way as the prior releases.
Each language maps to its new form; iw maps to he, ji maps to yi, and in maps to id.
Customers affected and not able to use the new ISO codes, can get the previous FAS behavior with the following configuration changes:
- create the file
unpublished-indexer-config/system.propertieswith the single linejava.locale.useOldISOCodes=true - create the file
unpublished-indexer-config/java.options.cruwith the single line-Djava.locale.useOldISOCodes=true - add the following property in Controller's
services.xml:<property name="ms.additionalConfigFileNames">system.properties</property>
Memory optimizations
FAS has been optimized in terms of memory consumption when it comes to processing facets over a large number of values that contain groups (facet aliases).
Notes:
- This feature is already enabled by default, so nothing needs to be done here.
- FAS is now providing an additional configurations over the memory structures involved into calculating such facets, so additional tuning is possible per customer if needed (see the next section).
Cache related to facet’s values calculations is now configurable (AggregationStore)
The AggregationStore instances, which are long living, are now added to caches.jsp page. It is possible to additionally configure the cache instances in system.xml under:
-
/com/fredhopper/tree/AggregationStore/Histogram- for histograms generated. -
/com/fredhopper/tree/AggregationStore/AttributeValueMaps- forattributeValueMapobjects.
For both cache types it is possible to specify:
-
cache-size- how much the cache should grow. If put to0items are not cached. Default value is500. -
cache-lifetime- each cache item’s age is tracked; once the configured value is reached, the item drops from the cache. Default value is60000.
For AttributeValueMaps it is possible to track and specify the maximum amount of memory in bytes:
-
memory-tracking-enabled- whether the cache tracks the amount of memory occupied. Default isfalse. -
max-memory-size-in-bytes- the maximum memory that allattributeValueMapsobjects should occupy in theAggregationStorecache. Default to 2GB (2147483648 bytes). This is kept in mind only ifmemory-tracking-enabledis enabled.
It is also possible to configure whether FAS uses a single instance for the AggregationStore per universe. This is done by enabling use-single-instance-per-universe in /com/fredhopper/tree/AggregationStore node in system.xml. If set to true FAS will use a single instance per universe. Default is false (preserving the existing behavior).
Example:
<node name="AggregationStore">
<map>
<!-- This setting will make FAS use a single (per universe) instance of AggregationStore
Currently we have an instance attached to each universe and separate instances created for each
requests -->
<entry key="use-single-instance-per-universe" value="false" />
</map>
<node name="Histogram">
<map>
<entry key="cache-size" value="500" />
<entry key="cache-life-time" value="60000" />
</map>
</node>
<node name="AttributeValueMaps">
<map>
<entry key="cache-size" value="500" />
<entry key="cache-life-time" value="60000" />
<!-- Enable AttributeValueMaps memory tracking. If enabled the cache is monitoring its memory
and if a certain limit is reached, the oldest data is evicted from the cache -->
<entry key="memory-tracking-enabled" value="false"/>
<entry key="max-memory-size-in-bytes" value="2147483648" />
</map>
</node>
</node>Render both "more" and "less" links for facets
It is now possible to render both "more" and "less" links for facets into the response for certain use cases (where applicable). To enable the feature the com/fredhopper/features section should be edited in system.xml and display-both-more-and-less-link-in-facets should be set to true. The feature is disabled by default.
Example:
<node name="features">
<map>
<entry key="display-both-more-and-less-link-in-facets" value="true"/>
</map>
</node>When the feature is enabled, the response extends to display an additional link. See example (for xml):
<link type="more" nr="10">
<name>more</name>
<url-params>preview_advanced=true&fh_location=%2f%2fscrewfix%2fen_GB</url-params>
</link>
<additionalLink>
<link type="less" nr="2">
<name>less</name>
<url-params>preview_advanced=true&fh_location=%2f%2fscrewfix%2fen_GB</url-params>
</link>
</additionalLink>The feature covers rare cases like the following:
- If we have a facet with 13 values in total and the number of values to be displayed from Merchandising Studio is configured to 2.
- If we send a request and add a
fh_maxdisplaynrvalues_<attribute type>query parameter set to 3- If the feature is disabled: response will return 3 values for the facet and the
lesslink will point to 2 values. - If the feature is enabled: response will return 3 values for the facet and
morelink pointing to 13 values alongside withlesslink pointing to 2 values as anadditionalLink.
- If the feature is disabled: response will return 3 values for the facet and the
Comments
0 comments
Please sign in to leave a comment.