Skip to content

2.11.10

Latest
Compare
Choose a tag to compare
@rbayet rbayet released this 11 Dec 14:23
· 4 commits to 2.11.x since this release

🏆 Main features

💎 Introducing the Cascade Search suggestions module

Foreword
Please note that while the description below and the screenshots are in English, the feature has been primarily conceived, developed and tested on a French dataset. Nonetheless, by design, it should also work pretty much fine out-of-the-box for other common romance languages (Spanish, Italian, Portuguese) and English.
On the other hand, more complex languages, or languages that our team are not native speakers of, will need some testing and/or customizing of the Elasticsuite analysis configuration to fare better.
For instance, for germanic languages using word compounding like German and Dutch, adding a word decompounder step in the analysis, if not already done before installing the module might be a requirement.
Please note that the module includes a language restriction setting, so on a multi-store / multi-language setup, you could totally enable it for your French, Spanish and English store views, and simply disable it for the others.
At any case, we're open to any positive or negative feedback about the behavior of the module in any language.

The new Cascade Search premium module (package smile/module-elasticsuite-cascade-search) leverages your behavioral data to suggest finer popular search terms to your users to allow them navigating from a very vague search query to the specific item type they might be looking for.

In the example below, a user initially searches for "table" and several search terms suggestions will be displayed in the search results page above the product lists.
Each suggestion is decorated with the best matching product for the suggested search terms.
image

The user can then decide to indeed search for "folding table" and on the search results page, additional finer suggestions will be displayed.
image

The suggestion block automatically disappears when there are no longer finer suggestions popular enough to be displayed.

The module allows to preview and manage suggestions by either blacklisting a suggestion globally, so it will never be shown whatever the context, or blacklisting a suggestion in a specific search context, for instance to remove duplicate suggestions.

For instance, in the example below, when previewing in admin the suggestions for "folding table", we can see that the "market folding table" is globally blacklisted and "folding table in aluminum" is locally blacklisted, ie blacklisted specifically when searching for "folding table".
image

Post-installation

After adding the package smile/module-elasticsuite-cascade-search to your project, enabling the module Smile_ElasticsuiteCascadeSearch and reviewing the settings, you will need to execute the following commands to rebuild the two new Magento indexers the feature relies upon

php bin/magento indexer:reset elasticsuite_search_events
php bin/magento indexer:reindex elasticsuite_search_events elasticsuite_search_suggestions

Those two new indexers need to be set up in "Update by Schedule".
Please note that since the elasticsuite_search_events indexer can be quite costly to create depending on your Elasticsuite Tracker retention delay, number of stores and traffic (it aggregates, analyzes and re-indexes all popular searches) it is protected from "accidental rebuilding requests" by needing to be in the "Invalid" state to be rebuilt.
Hence the first command above being php bin/magento indexer:reset elasticsuite_search_events.

💎 Making the Elasticsuite Recommender more flexible through Target Rules

While the Elasticsuite recommender allows creating optimizers to boost some products in behavioral data driven related products, cross-sells or upsells product recommendations, it was not possible to force the presence of some very specific products for a given product or set of products like it can be done with the Adobe Commerce Target Rule module.

It is now possible (if you're on a Magento Enterprise/Adobe Commerce version) through the Elasticsuite Premium package smile/module-elasticsuite-recommender-target-rule-proxy that will provide the Smile_ElasticsuiteRecommenderTargetRuleProxy module.
It introduces a new setting "Extend selected products to target rule products" for every recommendation type to allow complementing the manually configured products with products coming from Related Products/Target Rules recommendations.

image

Elasticsuite Tracker: support of Magento Company B2B module and support of Klarna checkout success page

The Elasticsuite Tracker is now recording the user's customer group and, if the Magento B2B modules are deployed in your environment and if the Company feature enabled, the company he belongs to.
In turn, the Analytics/Search Usage page will display additional selectors to filter the behavioral data based on the customer groups and/or companies.

image

If your site is using Klarna as a payment method, the Elasticsuite tracker was not able to identify the specific checkout success page as such and record the sale event.
It is now done through a newly introduced DI mechanism which you can use to also add support for other third party or custom Magento layout page identifiers ([module]_[controller]_[action]) to be identified as a checkout success page.

Ability to faster identify Ghost Indices as such

By default, the Elasticsuite Indices screen will identify indices as "Ghost" when

  • they fit the pattern of a index created by Elasticsuite for re-indexing data (products, categories, thesaurus, ...) of the current Magento instance
  • but do not bear the index alias marking them as "Live"
  • and were created 2 days ago or more

Those Ghost indices resulting for a failed full re-indexing processes draw resources from you Elasticsearch/OpenSearch cluster and you're encouraged to remove them as soon as possible (once you're able to determine why they occurred in the first place).
Elasticsuite allows you to remove them manually from the Indices screen and there are third party modules that provide cronjobs to remove them periodically.

Depending on your context, for instance

  • if you have a lot of store views and usually lightweight, fast re-indexing product catalogs
  • but are currently encountering a lot of issues due to third party modules acting up or an unstable Elasticsearch/OpenSearch cluster
    you could end up in a situation with a lot of failed re-indexation indices in an "Unknown" status waiting for that 2 days time period to elapse before they are correctly flagged as "Ghost" so you can remove them.

A new setting is available in Stores > Configuration > Elasticsuite > Base Settings > Indices Settings > Time for an index to be considered Ghost (in seconds) so you can reduce, for instance, that default 2 days period to 6 hours (by setting its value to 21,600 - 6 hours x 3600 seconds) if you know that your catalog product full re-indexing will either succeed or fail in at most 1 hour.

📦 Features

  • [Analytics][Tracker] Feature #3340, add company_id and customer_group_id in tracking data by @vahonc in #3459
  • [Core] Setting to customize time before an index becomes ghost by @rbayet in #3468
  • [Tracker] Extensible page identifier mapping + klarna support out-of-the-box by @romainruaud in #3446

💻 Technical

  • [Analytics] Handle case where Magento_Company has been installed, enabled then removed by @rbayet in #3463
  • 💎 [Explain] Take into account Thesaurus cache config by @rbayet
  • 💎 [InstantSearch] Allow to configure FPC TTL for ACP by @romainruaud
  • 💎 [Recommender] Cross-sell leftovers handling and Hÿva compatibility by @rbayet
  • 💎 [Recommender] Make the visitor widget compatible with Hÿva by @romainruaud
  • 💎 [Recommender][Hyva] Force HTTP cache bypass by @rbayet
  • [Thesaurus] Conditional caching settings by @rbayet in #3447

🐛 Fixes

  • [Ajax Filter] Prevent fatal error when category is not existing. by @romainruaud in #3455
  • [Catalog] Fix #3431, replacing 'onclick' with an inline function to bind the click events by @vahonc in #3443
  • [Indices] Fix #3449, handling a false value of Index updated date by @vahonc in #3461
  • 💎 [VirtualAttribute] Create temporary tables without FK to prevent failure (errno 150) on some MariaDB/MySQL versions by @rbayet

🔧 Tests

  • [Core] Adding a few Search related unit tests by @rbayet in #3454
  • [Core] Adding some unit tests by @rbayet in #3433
  • [Core] Adding some adapter agg. building unit tests by @rbayet in #3435
  • [Core] Fixing the date histo. agg builder unit test (ES8 compat.) by @rbayet in #3436
  • [Thesaurus] Additional PHPUnit tests by @rbayet in #3447

Full Changelog: 2.11.9.2...2.11.10