dada
Apr 3, 2023
  1444
(2 votes)

Improve performance by enabling language routing on search requests

In Find 13, we introduced language routing on indexing to improve indexing performance for indexes setup with multiple languages.

With the release of Find 13.4.9, we further introduced language routing on query time. We recommend moving up to 13.5.7 due to other bug fixes. This feature is also available in .NET flavours: 14.2.4 and 15.0.3

This feature enables passing the query only to the specific language index, rather than having all language indexes process the query even though most of them would only respond with 0 hits as we're usually filtering on language properties in the index.

Since 13.5.1 this feature is disabled by default.

To enable this feature, there are a few steps to follow:

  1. Ensure that you explicitly or implicitly set the language for your query.
    You typically achieve this by using one of the following approaches:
    .Search<type>(language) or .UnifiedSearch(language)
    Alternatively, you can rely on the extensions provided by Episerver.Find.CMS and use
    .UnifiedSearch() or .UnifiedSearchFor()
    which will automatically set the preferred culture if you don't specify one. Be careful not to use the Episerver.Find extensions, as they do not resolve language.

  2. You can verify that everything is working correctly by checking the analyzer set in the JSON for the request against the _search. 
    It should say analyzer:[language]. If you are using .UsingSynonyms() it should say analyzer: synonym_[language_code].

  3. If you are using CMS 11, you can do this in the web.config file by adding the following:
    <appSettings>
        <add key="episerver:EnableLanguageRoutingInSearchRequest" value="true"/>
    If you are using CMS 12, you can do this in the appsettings.json file by adding the following:
    "EPiServer": {
        "Find": {
          "EnableLanguageRoutingInSearchRequest":true
        }
    }


Note that if you have custom InField extension that makes it possible to query fields for multiple language fields, language routing query time cannot be used.

Our tests have shown a decrease in response times of around 25% for queries with language routing enabled. 
However, this improvement may vary depending on your implementation, the number of languages enabled on the index, and the data indexed.

Find versions that support language routing on search requests
https://nuget.optimizely.com/package/?id=EPiServer.Find&v=15.0.3
https://nuget.optimizely.com/package/?id=EPiServer.Find&v=14.2.4
https://nuget.optimizely.com/package/?id=EPiServer.Find&v=13.5.7

Apr 03, 2023

Comments

Eric Petersson
Eric Petersson Apr 4, 2023 06:16 AM

Cool! When updating to Find 13.15.17.0 in .NET Framework I get that the packages are based on EPiServer.Cms 11.20.17, which is not availble from the nuget feed. 

Is there a planned release date when it will be available?

dada
dada Apr 4, 2023 07:25 AM

Hi Eric,

Thanks for the feedback. I assume you mean 13.5.7. I will check with the dev team and get back to you.

Eric Petersson
Eric Petersson Apr 4, 2023 07:32 AM

Hi again, the EPiServer.Cms 11.20.17 version

Please login to comment.
Latest blogs
Opti ID overview

Opti ID allows you to log in once and switch between Optimizely products using Okta, Entra ID, or a local account. You can also manage all your use...

K Khan | Jul 26, 2024

Getting Started with Optimizely SaaS using Next.js Starter App - Extend a component - Part 3

This is the final part of our Optimizely SaaS CMS proof-of-concept (POC) blog series. In this post, we'll dive into extending a component within th...

Raghavendra Murthy | Jul 23, 2024 | Syndicated blog

Optimizely Graph – Faceting with Geta Categories

Overview As Optimizely Graph (and Content Cloud SaaS) makes its global debut, it is known that there are going to be some bugs and quirks. One of t...

Eric Markson | Jul 22, 2024 | Syndicated blog

Integration Bynder (DAM) with Optimizely

Bynder is a comprehensive digital asset management (DAM) platform that enables businesses to efficiently manage, store, organize, and share their...

Sanjay Kumar | Jul 22, 2024

Frontend Hosting for SaaS CMS Solutions

Introduction Now that CMS SaaS Core has gone into general availability, it is a good time to start discussing where to host the head. SaaS Core is...

Minesh Shah (Netcel) | Jul 20, 2024

Optimizely London Dev Meetup 11th July 2024

On 11th July 2024 in London Niteco and Netcel along with Optimizely ran the London Developer meetup. There was an great agenda of talks that we put...

Scott Reed | Jul 19, 2024