Skip to content

Releases: Smile-SA/elasticsuite

2.11.10

11 Dec 14:23
Compare
Choose a tag to compare

🏆 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

Read more

2.10.24

11 Dec 14:23
86a57d7
Compare
Choose a tag to compare

🏆 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

Read more

2.11.9.2

30 Oct 09:19
Compare
Choose a tag to compare

🏆 Main features

💎 Allowing to extend cross sell recommendations to all products in the cart

Up to now, the Elasticsuite cross-sell recommendation block only showed recommendations for the last product added to the cart.
It is now possible to show recommendations for all the products in the cart :

  • either still prioritizing the last product added to the cart but, if there are slots left, filling the block with recommendations from the other products in the cart
  • or out right reserving, statically or dynamically, slots for every products in the cart

cross-sell-recommendation

🚀 Performances oriented features

Ability to enable/disable the error requests body logging

Last release introduced an error logging mechanism that would systematically log into Magento logging system the error message and the body of requests failing on your OpenSearch/Elasticsearch server when the Elasticsuite debug mode was disabled to help with issues in production environment.
That was probably an oversight not to add a configuration switch since some type of errors can be caused by "request is too big" causes, hence adding strain to the logging system by pushing several megabytes requests bodies.

A new setting "Enable logging of request that produce errors" is available in Stores > Configuration > Elasticsuite > Base Settings just above the legacy "Enable Debug Mode" :
image

The feature can now behaves as "light debug mode" for production environments as intended.

Thesaurus: ability to limit the amount of alternative queries effectively sent to the search engine

While the Thesaurus system "Max Allowed Rewrites" setting available in Elasticsuite > Search Relevance > Thesaurus Configuration > General Configuration limits the number of substitutions in the original visitor search query, there can be situations when you have a lot (and we mean a lot) of thesaurus rules with long lists of alternative terms or when the same word is present in multiple rules.

In those situations, the "Max Allowed Rewrites" will not be enough to prevent generating several tenths or even hundreds of alternative search queries leading to a huge single search request that will end up failing on the server by hitting the ceiling of the "maximum number of clauses" allowed by your cluster configuration and/or memory available.

The new setting "Max Alternative Search Queries" available in Elasticsuite > Search Relevance > Thesaurus Configuration > General Configuration allows you to put a cap on the total number of alternative, rewritten search queries to effectively take into account for a given original visitor search query (defaults to 0, no limitation).
Since there is no unified mechanism available in Elasticsearch or OpenSearch for us to detect the ideal value to put there from a technical stand point, it will be up to you to determine the value you deem "sufficient" functionally.

You can also use that setting preventively in periods of high traffic (holiday season, sale events) to limit the strain on your cluster if you know that your merchandisers have been "thesaurus happy".

📦 Features

  • [Core] Error request body logging tied to new setting by @rbayet in #3424
  • [Core] Adding i18n placeholders for nl_NL and de_DE (new setting) by @rbayet in #3425
  • [Thesaurus] Ability to cut-off the amount of alternative queries by @rbayet in #3426
    • 💎 [Explain] Display thesaurus alternative queries cut-off by @rbayet
  • 💎 [Recommender] Allow to extend cross sell recommendations with configuration by @romainruaud
  • 💎[Recommender] Re-organizing system.xml section with groups by @rbayet
  • [Tracker] Prevent tracker to open sessions when registering events. by @romainruaud in #3414

🐛 Fixes

  • 💎 [BehavioralData] Handle search.max_buckets set to -1 (ES 6.8) by @rbayet
  • 💎 [Explain] Removing last trace of 'type' in optimizers index by @rbayet
  • 💎 [Merchandiser] Prevent fatal error on Widgets/Hyva widgets config by @rbayet
  • [VirtualCategories][PageBuilder] Ensure proper order for plugin appliance. Fix #3401 by @romainruaud in #3422

Full Changelog: 2.11.9.1...2.11.9.2

2.10.23.2

30 Oct 09:18
f584cd0
Compare
Choose a tag to compare

🏆 Main new features

💎 Allowing to extend cross sell recommendations to all products in the cart

Up to now, the Elasticsuite cross-sell recommendation block only showed recommendations for the last product added to the cart.
It is now possible to show recommendations for all the products in the cart :

  • either still prioritizing the last product added to the cart but, if there are slots left, filling the block with recommendations from the other products in the cart
  • or out right reserving, statically or dynamically, slots for every products in the cart

cross-sell-recommendation

🚀 Performances oriented features

Ability to enable/disable the error requests body logging

Last release introduced an error logging mechanism that would systematically log into Magento logging system the error message and the body of requests failing on your OpenSearch/Elasticsearch server when the Elasticsuite debug mode was disabled to help with issues in production environment.
That was probably an oversight not to add a configuration switch since some type of errors can be caused by "request is too big" causes, hence adding strain to the logging system by pushing several megabytes requests bodies.

A new setting "Enable logging of request that produce errors" is available in Stores > Configuration > Elasticsuite > Base Settings just above the legacy "Enable Debug Mode" :
image

The feature can now behaves as "light debug mode" for production environments as intended.

Thesaurus: ability to limit the amount of alternative queries effectively sent to the search engine

While the Thesaurus system "Max Allowed Rewrites" setting available in Elasticsuite > Search Relevance > Thesaurus Configuration > General Configuration limits the number of substitutions in the original visitor search query, there can be situations when you have a lot (and we mean a lot) of thesaurus rules with long lists of alternative terms or when the same word is present in multiple rules.

In those situations, the "Max Allowed Rewrites" will not be enough to prevent generating several tenths or even hundreds of alternative search queries leading to a huge single search request that will end up failing on the server by hitting the ceiling of the "maximum number of clauses" allowed by your cluster configuration and/or memory available.

The new setting "Max Alternative Search Queries" available in Elasticsuite > Search Relevance > Thesaurus Configuration > General Configuration allows you to put a cap on the total number of alternative, rewritten search queries to effectively take into account for a given original visitor search query (defaults to 0, no limitation).
Since there is no unified mechanism available in Elasticsearch or OpenSearch for us to detect the ideal value to put there from a technical stand point, it will be up to you to determine the value you deem "sufficient" functionally.

You can also use that setting preventively in periods of high traffic (holiday season, sale events) to limit the strain on your cluster if you know that your merchandisers have been "thesaurus happy".

📦 Features

  • [Core] Error request body logging tied to new setting by @rbayet in #3424
  • [Core] Adding i18n placeholders for nl_NL and de_DE (new setting) by @rbayet in #3425
  • [Thesaurus] Ability to cut-off the amount of alternative queries by @rbayet in #3426
    • 💎 [Explain] Display thesaurus alternative queries cut-off by @rbayet
  • 💎 [Recommender] Allow to extend cross sell recommendations with configuration by @romainruaud
  • 💎[Recommender] Re-organizing system.xml section with groups by @rbayet
  • [Tracker] Prevent tracker to open sessions when registering events. by @romainruaud in #3414

🐛 Fixes

  • 💎 [BehavioralData] Handle search.max_buckets set to -1 (ES 6.8) by @rbayet
  • 💎 [Explain] Removing last trace of 'type' in optimizers index by @rbayet
  • 💎 [Merchandiser] Prevent fatal error on Widgets/Hyva widgets config by @rbayet

Full Changelog: 2.10.23.1...2.10.23.2

2.11.9.1

22 Oct 10:20
Compare
Choose a tag to compare

🏆 Main features

Ability to search in/refine the explained results

It is now possible to search inside the list of products displayed in the explain results screen, in a similar way that it is possible in the category preview screen.
Since that does not alter the score of the products found through this "mini-search", it is now easier to look at the score details of a given product in the explained context.

The default explain results screen when simulating a full text search for "gear" on a Luma :
explain_search_before_small

When reducing the displayed products to those also matching "duffle" :
image

💎 Accentuated form of popular search terms can now be shown in the autocomplete

If your store is in a language featuring accents and diacritics, you might want to show popular search terms exactly as typed by your users instead of the "ASCII folded" version of those search terms as it is now.
For instance, in French, if "boîte à thé" (tea box) is a popular search, by default the Behavioral Autocomplete module would show it as "boite a the".
The new settings available in Stores > Configuration > Elasticsuite > Behavioral Autocomplete > Tweaks > Show raw search terms will allow you to make sure that "boîte a thé" could be shown as is when a user searches for "boite" in the autocomplete.

🐛 Fixes

  • [Catalog] Feature #3333, add fallback to use system config value for Sort Direction by @vahonc in #3372
  • [Catalog] Fix #3405, returning the translation of the variable for Dutch language by @vahonc in #3408
  • [Core] Fixing alternative stemmers list (Italian, Spanish) by @rbayet in #3396
  • [Core] Forced logging of error request body+message w/o debug mode by @rbayet in #3417
  • [Core] Adding support for simple regexp queries by @rbayet in #3400
  • [Core] No edge ngram decomposition in termVectors by @rbayet in #3406
  • 💎 [Explain] Fix plugin conflict with smile/module-elasticsuite-targetrule
  • [Indices] Fix #3403 DateTime constructor in IndexStatusProvider by @romainruaud in #3418
  • [Optimizer] Fix display of boost value/weight grid column by @rbayet in #3413
  • 💎 [Recommender] Fix facet recommender display on mobile
  • [Tracker] Avoid deprecation warnings by @rbayet in #3398
  • [Tracker] Remove CDATA tags in tracker JS. by @romainruaud in #3411
  • [VirtualCategories] Improve sortOrder direction fallback in case of empty string by @frank-bokdam in #3399
  • [VirtualCategories] Adding fallback when default sort by is unset by @romainruaud in #3419

Full Changelog: 2.11.9...2.11.9.1

2.10.23.1

22 Oct 10:20
Compare
Choose a tag to compare

🏆 Main features

💎 Ability to search in/refine the explained results

It is now possible to search inside the list of products displayed in the explain results screen, in a similar way that it is possible in the category preview screen.
Since that does not alter the score of the products found through this "mini-search", it is now easier to look at the score details of a given product in the explained context.

The default explain results screen when simulating a full text search for "gear" on a Luma :
explain_search_before_small

When reducing the displayed products to those also matching "duffle" :
image

💎 Accentuated form of popular search terms can now be shown in the autocomplete

If your store is in a language featuring accents and diacritics, you might want to show popular search terms exactly as typed by your users instead of the "ASCII folded" version of those search terms as it is now.
For instance, in French, if "boîte à thé" (tea box) is a popular search, by default the Behavioral Autocomplete module would show it as "boite a the".
The new settings available in Stores > Configuration > Elasticsuite > Behavioral Autocomplete > Tweaks > Show raw search terms will allow you to make sure that "boîte a thé" could be shown as is when a user searches for "boite" in the autocomplete.

🐛 Fixes

  • [Catalog] Feature #3333, add fallback to use system config value for Sort Direction by @vahonc in #3372
  • [Catalog] Fix #3405, returning the translation of the variable for Dutch language by @vahonc in #3408
  • [Core] Adding support for simple regexp queries by @rbayet in #3400
  • [Core] No edge ngram decomposition in termVectors by @rbayet in #3406
  • [Core] Fixing alternative stemmers list (Italian, Spanish) by @rbayet in #3396
  • [Core] Forced logging of error request body+message w/o debug mode by @rbayet in #3417
  • 💎 [Explain] Fix plugin conflict with smile/module-elasticsuite-targetrule
  • [Optimizer] Fix display of boost value/weight grid column by @rbayet in #3413
  • 💎 [Recommender] Fix facet recommender display on mobile
  • [Tracker] Avoid deprecation warnings by @rbayet in #3398
  • [Tracker] Remove CDATA tags in tracker JS. by @romainruaud in #3411
  • [VirtualCategories] Improve sortOrder direction fallback in case of empty string by @frank-bokdam in #3399
  • [VirtualCategories] Adding fallback when default sort by is unset by @romainruaud in #3419

Full Changelog: 2.10.23...2.10.23.1

2.11.9

17 Sep 09:03
Compare
Choose a tag to compare

🏆 Main features

Translation improved and added for German 🇩🇪 and Dutch 🇳🇱 !

As the Elasticsuite only consists of people of variable fluency in French and English, we have pretty much relied on the community for additional language translations.
A huge shout-out to @lewisvoncken who provided a huge contribution which not only improved and expanded the German translation but also added a brand new Dutch translation !
We'll try to get the ball rolling and address the gap between Elasticsuite Open Source and Elasticsuite Premium in that regard.

Changing your store language stemmer

Over the years, we've noticed some issues with the default language stemmers used in Elasticsuite where, sometimes, the stemmers would not recognize properly the plural form of a word (for instance irregular french plural or some legitimate italian plurals) or would provide the same stem for quite different words (collection and collectivité in french).

That led to the introduction of the stemmer_override analyzer step which allows a developer to add some stemming rules to address those issues.
But since another approach sometimes used by Elasticsuite end users was simply to test and switch to another available language stemmers, we've decided to make it possible from the Magento Admin.

In the Stores > Configuration, at the store view level, it will be now possible for you to select a different stemmer than the one Elasticsuite uses if ElasticSearch/OpenSearch provides several for your language, that is for: Dutch, English, Finish, French, Galician, German, Hungarian, Italian, Norwegian (Bokmal and Nynorsk), Portugueuse, Russian, Spanish and Swedish.

image

The configuration is available, at the store view level only, at Stores > Configuration > Elasticsuite > Analyzers settings > Language stemmer configuration (don't forget to perform a full re-index after changing the setting).

Slightly better UX on the indices grid

On a UAT or Staging environment where the Elasticsearch/OpenSearch cluster is shared by many Magento instances, it can be cumbersome to locate and inspect your live indices in the Elasticsuite > System > Indices grid if you have to scroll down 5 screens to reach them.
This release includes two small improvements

  • the ability to filter indices by their name (and not only their alias)
  • the ability to hide all the external indices

image
image

Detailed changelog

📦 Features

  • [Core] Allow changing language stemmer when possible by @rbayet in #3361
  • [Core] Added dutch (and german) translations with Crowdin (rebase) by @lewisvoncken in #3363
  • [Indices] Allow filtering indices grid on indices names by @rbayet in #3381
  • [Indices] Allow hiding external indices by @rbayet in #3383

💻 Technical

  • [BehavioralData] ( 💎 Elasticsuite Premium) Collect data according to search.max_buckets by @rbayet
  • [Catalog] Default sort direction system config settings 2.10 feature by @romainruaud in #3369
  • [Catalog] Feature #3333, add system config settings for Default Sort Direction by @vahonc in #3367
  • [CatalogOptimizer] Allow category limitation for third party containers by @rbayet in #3352
  • [CatalogOptimizer] Category preview for third party containers by @rbayet in #3356
  • [Core] Fixing some extra quotes in i18n files by @rbayet in #3365
  • [Core] Elasticsuite client exposes cluster info/settings by @rbayet in #3377
  • [Recommender] Allow optimizer category preview for recommender containers even when they are the only containers selected for an optimizer by @rbayet
  • [Tracker] Prevent events with empty or null tracker visitor/session identifiers to be indexed by @rbayet in #3373

🐛 Fixes

  • [Analytics][Tracker] Handle rare case where tracker indices are empty by @rbayet in #3374
  • [Catalog] Fix #2948 fallback to the last known valid product positions by @vahonc in #3386
  • [Catalog] Show the 'is_filterable_in_search' independently of 'is_searchable' in product attribute edit screen by @rbayet in #3354
  • [Core] Fix #3334, adding support currency condition by @vahonc in #3362
  • [Core] Fixes #3359 Query name set error if fuzziness and phonetic disabled by @rbayet in #3366
  • [Indices] Status 'unknown' when stats fails + logging failures by @rbayet in #3382
  • [Optimizers] Fallback to root category for category preview if not root category is selected for a virtual category by @rbayet in #3355
  • [Recommender] ( 💎 Elasticsuite Premium) Fix optimizer preview recommender by @rbayet
  • [Recommender] ( 💎 Elasticsuite Premium) Make optimizer filter compatible with native by @rbayet
  • [Tracking] Add query id in GraphQL search response to make Autocomplete optimizers work properly by @PierreGauthier in #3380

Full Changelog: 2.11.8.3...2.11.9

2.10.23

17 Sep 09:03
d3f8eae
Compare
Choose a tag to compare

🏆 Main features

Translation improved and added for German 🇩🇪 and Dutch 🇳🇱 !

As the Elasticsuite only consists of people of variable fluency in French and English, we have pretty much relied on the community for additional language translations.
A huge shout-out to @lewisvoncken who provided a huge contribution which not only improved and expanded the German translation but also added a brand new Dutch translation !
We'll try to get the ball rolling and address the gap between Elasticsuite Open Source and Elasticsuite Premium in that regard.

Changing your store language stemmer

Over the years, we've noticed some issues with the default language stemmers used in Elasticsuite where, sometimes, the stemmers would not recognize properly the plural form of a word (for instance irregular french plural or some legitimate italian plurals) or would provide the same stem for quite different words (collection and collectivité in french).

That led to the introduction of the stemmer_override analyzer step which allows a developer to add some stemming rules to address those issues.
But since another approach sometimes used by Elasticsuite end users was simply to test and switch to another available language stemmers, we've decided to make it possible from the Magento Admin.

In the Stores > Configuration, at the store view level, it will be now possible for you to select a different stemmer than the one Elasticsuite uses if ElasticSearch/OpenSearch provides several for your language, that is for: Dutch, English, Finish, French, Galician, German, Hungarian, Italian, Norwegian (Bokmal and Nynorsk), Portugueuse, Russian, Spanish and Swedish.

image

The configuration is available, at the store view level only, at Stores > Configuration > Elasticsuite > Analyzers settings > Language stemmer configuration (don't forget to perform a full re-index after changing the setting).

Slightly better UX on the indices grid

On a UAT or Staging environment where the Elasticsearch/OpenSearch cluster is shared by many Magento instances, it can be cumbersome to locate and inspect your live indices in the Elasticsuite > System > Indices grid if you have to scroll down 5 screens to reach them.
This release includes two small improvements

  • the ability to filter indices by their name (and not only their alias)
  • the ability to hide all the external indices

image
image

Detailed changelog

📦 Features

  • [Core] Allow changing language stemmer when possible by @rbayet in #3361
  • [Core] New translations for German and Dutch (de_DE.csv and nl_NL.csv) (2.10.x) by @lewisvoncken in #3364
  • [Indices] Allow filtering indices grid on indices names by @rbayet in #3381
  • [Indices] Allow hiding external indices by @rbayet in #3383

💻 Technical

  • [BehavioralData] ( 💎 Elasticsuite Premium) Collect data according to search.max_buckets (2.10.x) by @rbayet
  • [Catalog] Default sort direction system config settings 2.10 feature by @romainruaud in #3369
  • [Catalog] Feature #3333, add system config settings for Default Sort Direction by @vahonc in #3367
  • [Core] Fixing some extra quotes in i18n files by @rbayet in #3365
  • [Core] Elasticsuite client exposes cluster info/settings (2.10.x) by @rbayet in #3378
  • [Tracker] Ignore events with empty/null visitor/session identifiers (2.10.x) by @rbayet in #3375

🐛 Fixes

  • [Analytics][Tracker] Handle rare case where tracker indices are empty (2.10.x) by @rbayet in #3376
  • [Catalog] Fix #2948 fallback to the last known valid product positions by @vahonc in #3386
  • [Core] Fix #3334, adding support currency condition in Advanced Search by @vahonc in #3362
  • [Core] Fixes #3359 Query name set error if fuzziness and phonetic disabled by @rbayet in #3366
  • [Indices] Status 'unknown' when stats fails + logging failures by @rbayet in #3382
  • [Optimizers] Fallback to root category for category preview if not root category is selected for a virtual category by @rbayet in #3355
  • [Tracking] Add query id in GraphQL search response to make Autocomplete optimizers work properly by @PierreGauthier in #3380

Full Changelog: 2.10.22.3...2.10.23

2.11.8.3

19 Aug 08:32
Compare
Choose a tag to compare

💻 Technical

  • [VirtualCategories] Option to force empty category if virtual category root disabled by @rbayet in #3286

A new setting, enabled by default, is available at Store Configuration > Elasticsuite > Catalog Search > Catalog Search Configuration > Force zero results for disabled categories.

image

When set to Yes, it will make sure that

  • any disabled category used as a "virtual category root" by a virtual category will lead to that virtual category not displaying any products
  • any disabled category used in a rule of the rules engine (whether in a virtual category or in an optimizer) will result in a clause not matching any products either
    • if that disabled category rule is in "If ALL of these conditions are TRUE" condition, it will make that condition fail
    • if that disabled category rule is in "If ANY of these conditions are TRUE" condition, it will be as this that category rule was not in the condition

While it was at some point planned to hardcode that new (in our eyes) correct behaviour, we introduced the setting Store Configuration > Elasticsuite > Catalog Search > Catalog Search Configuration > Force zero results for disabled categories so you can decide to go back how things were by switching the setting to No.

🐛 Fixes

  • [Core] Prevent type error on php8 if attribut label is a phrase object by @PierreGauthier in #3338
  • [Indices] Avoid warning when filtering on index alias by @rbayet in #3348

🔧 CI/CD

  • [Tools] Speed chmods in CI workflows by @rbayet in #3344
  • [Tools] CI: prevent composer cache cross-versions contamination by @rbayet in #3349

New Contributors

Full Changelog: 2.11.8.2...2.11.8.3

2.10.22.3

19 Aug 08:32
dc398c5
Compare
Choose a tag to compare

💻 Technical

  • [VirtualCategories] Option to force empty category if virtual category root disabled by @rbayet in #3286

A new setting, enabled by default, is available at Store Configuration > Elasticsuite > Catalog Search > Catalog Search Configuration > Force zero results for disabled categories.

image

When set to Yes, it will make sure that

  • any disabled category used as a "virtual category root" by a virtual category will lead to that virtual category not displaying any products
  • any disabled category used in a rule of the rules engine (whether in a virtual category or in an optimizer) will result in a clause not matching any products either
    • if that disabled category rule is in "If ALL of these conditions are TRUE" condition, it will make that condition fail
    • if that disabled category rule is in "If ANY of these conditions are TRUE" condition, it will be as this that category rule was not in the condition

While it was at some point planned to hardcode that new (in our eyes) correct behaviour, we introduced the setting Store Configuration > Elasticsuite > Catalog Search > Catalog Search Configuration > Force zero results for disabled categories so you can decide to go back how things were by switching the setting to No.

🐛 Fixes

  • [Core] Prevent type error on php8 if attribut label is a phrase object by @PierreGauthier in #3338
  • [Indices] Avoid warning when filtering on index alias by @rbayet in #3348

🔧 CI/CD

  • [Tools] Speed chmods in CI workflows by @rbayet in #3344
  • [Tools] CI: prevent composer cache cross-versions contamination by @rbayet in #3349

Full Changelog: 2.10.22.2...2.10.22.3