Skip to content

This release introduces a new field (page.order.items.date) in the Elasticsuite tracker related behavioral data indices which requires

updating the mapping of tracker_log_event indices where the field does not exist yet in the mapping fixing the mapping of tracker_log_event indices where the field already exists but with the wrong type which requires “cloning” those indices and re-indexing them locally

in all likelihood, this should concern only the last created tracker_log_event indices (one per store)

the re-indexing operation should be pretty quick, even with millions of events on such indices updating all orders events to propagate the order date to the page.order.items.date structure

which will take more time the bigger your retention delay and the more numerous your average number of sales per month

The steps above are automated in a Magento data upgrade script, executed by setup:upgrar.

๐Ÿ† Main features

๐Ÿ’Ž Introducing revenue as a metric

We’re introducing a new Elasticsuite Premium composer package named smile/module-elasticsuite-category-monitoring.
It provides a new module Smile_ElasticsuiteCategoryMonitoring whose feature is a new menu entry under “Elasticsuite Categories > Virtual Categories Dashboard“.
As its name suggests, it provides a screen listing all your virtual categories with some relevant information, alerts if need be and a direct link to go edit the virtual category.r.

Products accumulated revenue is now available as a behavioral data metric with the ability to create behavioral optimizers on

โ€ข Total revenue (accumulated revenue on the whole behavioral data retention delay)

โ€ข Cumulative revenue on the lastย 30ย days (accumulated revenue on the “daily” stats window, which isย 30ย days by default)

โ€ข Cumulative revenue on the lastย 60ย days (accumulated revenue on the “weekly” stats window, which isย 60ย days by default)

โ€ข Averaged daily revenue on the last fullย 7ย days (moving average indicated as “on the lastย 30ย days”)

โ€ข Averaged weekly revenue on the last fullย 4ย weeks (moving average indicated as “on the last โ€ข 60_days”)

(This is a reminder that we haven’t introduced yet the ability to extend the moving average metrics computation for all metrics to use the full window available for “daily” and “weekly” stats. This is something tuate your virtual categories.

๐Ÿ’ŽChanges for the โ€œBased on attribute valueโ€ and  โ€œBased on behavioral dataโ€ optimizers

The โ€œBased on attribute valueโ€ andย ย โ€œBased on behavioral dataโ€ rely on a per-product value (attribute value or behavioral metric, respectively) to determine their boost.
That raw value is multiplied by a โ€œscale factorโ€ (the same for all products) which is valued at 1 by default but could be changed in the optimizer edit form field โ€œBoost value (multiplier)โ€œ.
Thatย field has been renamedย to be (we hope !) more explicit :.

โ€œMetric value pre-multiplierโ€ forย ย โ€œBased on behavioral dataโ€ optimizers
It is also now located just below the attribute or metric select field.r.

โ€œAttribute value pre-multiplierโ€ for โ€œBased on attribute valueโ€ optimizers

  • โ€ข either to all categories
    • โ€ข or only to some categories

Preventing โ€œnegative boostingโ€ when the product value is too low

The per-product attribute/metric value, multiplied by that โ€œscale factorโ€ / value pre-multiplier can then be passed through a function represented by the โ€œBoost impactโ€ to potentially reduce the actual score boost it will generate

  • the High boost impact is the identify function

if the pre-multiplied attribute/metric value is 10, your product score will be multiplied by 10

if the pre-multiplied attribute/metric is 100, your product score will be multiplied by 100

this means huge differences in attribute or metric value will generate huge differences in score multipliers

  • the Medium boost impact uses the square root function

if the pre-multiplied attribute/metric value is 10, your product score will be multiplied by ~3.16

if the pre-multiplied attribute/metric is 100, your product score will be multiplied by 10

this helps reduce the range of score multipliers compared to the original range of attribute/metric value between products

  • the Low boost impact uses the common (decimal) logarithm to reduce the attribute/metric value+1 more aggressively

if the pre-multiplied attribute/metric value is 10, your product score will be multiplied by ~1.041

if the pre-multiplied attribute/metric value is 50, your product score will be multiplied by ~1.707

if the pre-multiplied attribute/metric is 100, your product score will be multiplied by ~2.004

Historically, we only made sure to exclude any product with an invalid value for the function behind each boost impact.
But that didnโ€™t prevent some products with a defined but low attribute/metric value from being actually penalized compared to products without any value.
For instance, for an optimizer

  • – boosting products according to their average daily sales number
  • – with a โ€œBoost value (multiply)โ€ (now named โ€œMetric value pre-multiplierโ€) of 1 (default value)
  • – and the โ€œLow impactโ€ selected

a product with an average daily sales of 5 would actually get a score multiplier of 0.77, so lowering its final, compared to a new product with no sales at all yet

The introduced changes now make sure to exclude any product with an attribute/metric value too low to result in a score multiplier greater than 1 :

for the High and Medium impact, that will be 1 and lower (divided by the pre-multiplier)

for the Low impact, that will be 9 and lower (divided by the pre-multiplier)

Given the previous example, the product with an average daily sales of 5 will no longer be penalized, but it wonโ€™t be boosted either.

The solution in this case, which is the traditional one when using the โ€œLow impact boostโ€ is to use an โ€œAttribute/Metric value pre-multiplierโ€ of 10 instead of 1.

If for whatever reason, you want for a given Attribute value/Behavioral data optimizer, to revert back to the historical behavior, you can do so with switching to Yes the new optimizer parameter โ€œAllow negative boostโ€.
Its default value is No to make all existing optimizers benefit from the new products exclusion mechanism

๐Ÿ“ฆ Features

  •  ๐Ÿ’Ž[BehavioralData] Introduce revenue as a metric
  • [Catalog] Implementing Category permissions
  •  ๐Ÿ’Ž[BehavioralOptimizer] Move up and change label for โ€˜Boost value (multiplier)โ€™
  •  ๐Ÿ’Ž[BehavioralOptimizer] Scale function/factor dependant products exclusion
  • [CatalogOptimizer] Move up and change label for โ€˜Boost value (multiplier)โ€™
  • [CatalogOptimizer] Scale function/factor dependant products exclusion
  • [CatalogOptimizer] Adding the products SKU in the preview area
  •  ๐Ÿ’Ž[Explain] Display alternative queries weight
  • [Healthcheck] Introduce the notion of Severity for checks
  • [Healthcheck] Severity color coding

๐Ÿ’ป Technical

  • [CatalogRule] Adding basic unit tests
  • [Core] Allow providing a value for โ€œmissingโ€ values in sort order params
  • [Healthcheck] No menu decoration if Debug Mode enabled
  • [Tools] Code quality to use PHP 8.1 to support associative array unpacking
  • [Tracker] Make sure the order date is available at the order items level
  • [Virtual Category] Prevent using cached query for sub virtual category

๐Ÿ› Fixes

  • ๐Ÿ’Ž [Explain] All store views optimizers not indexed in percolator
  •  ๐Ÿ’Ž[Explain] All store views optimizers not visible in Explain
  • [Healthcheck] Prevent shift of Admin Menu
  • [Healthcheck] Fixing invalid package version reading