Area: Episerver Search & Navigation
Applies to versions: 12 and higher
Other versions:

Architecture and languages

Recommendations [hide]

Episerver Search & Navigation (formerly Episerver Find) is a powerful, scalable query platform that can index and query large amounts of structured or unstructured data of any type, create custom search functionality, and build advanced navigation for non-hierarchical content. This topic describes built-in functionality and the underlying technology, as well as supported languages in Search & Navigation. See also the Episerver platform section.


The following functionality is included out-of-the-box:

Note: To ensure maximum availability and scaling flexibility, Episerver Search & Navigation uses dynamic IP ranges. If you for example require whitelisting of IP addresses in the firewall, make sure that your firewall supports domain-based whitelisting.

Technical foundation

Episerver Search & Navigation is built using ElasticSearch. The Episerver Search & Navigation API enforces a number of conventions and restrictions to be aware of, such as adding mappings (automatically handled by the conventions) and adding and removing indexes.


Episerver Search & Navigation is the foundation for search functionality in Episerver CMS and Commerce. It is integrated using a .NET-based client API, and interaction with the REST API through Javascript is done using JSON. Search & Navigation is not limited to being used from .NET, and is available as a software service. 

Architecture overview

Note: Search & Navigation does not support direct use of the JSON API, as there is no way to secure the connection without exposing the access key. In general, do not implement client-side requests directly to Search & Navigation.

Supported languages

When Search & Navigation is purchased, your organization orders an index and support for a specified set of languages. Search queries in any of these languages will run through a language analyzer . Search results delivered for these will be richer and more nuanced than for content languages not supported by the language analyzer.

The language analyzer breaks down text based on a language's characteristics. For example, the English analyzer might use stemming analysis to identify fish as the root word for fishing, fished, fishes, fisher, and fisherman. By understanding how a language's words are constructed, Search & Navigation can recognize several versions of a word as the same term and, thereby, provide better search results. Likewise, Search & Navigation optimization only works with supported languages.

While content in unsupported languages is added to the index, making it searchable, no analysis is done for such content. See Elasticsearch Analysis and Analyzers.

Search & Navigation's analysis and optimization features supports the following indexing languages.

See also: Language-specific queries

Compound splitting

​​​Many European languages contain compound words, such as the English term "steel thermos." In Swedish, that phrase is "ståltermos," one word. Compound words adversely affect relevancy for normal free-text search engines, especially for e-commerce, and can result in lower conversion rates.

Episerver Search & Navigation uniquely includes a feature called compound splitting, which analyzes each word and discovers compound words. To continue the previous example, a visitor can search for "termos" and get a relevant match for "ståltermos". Most search solutions (including Elasticsearch) do not include such functionality. And, solutions that do usually employ a less sophisticated approach that does not give the same high relevancy and associated conversion rates.

Compound splitting is available for Swedish and Norwegian.

Turning decompounding on/off [New in Episerver.Search & Navigation 12.3.0]

The default query setting is to not decompound the query string. To enable decompounding, use this syntax:

.For("query", x => x.Analyzer = Language.Swedish.Analyzer)

Here is how it works. If a user submits a search term fotbollsmatch, the query only matches fotbollsmatch/er/en/… and not (as it did previously) ‘fotboll/ar/en/..’ and match/er/en/…

On the other hand, if a user submits the search term fotboll, the search matches fotboll/ar/en… ,fotbollsmatch/er/en/…, and fotbollsplan/er/en.

Related topics

Do you find this information helpful? Please log in to provide feedback.

Last updated: Jan 28, 2019

Recommendations [hide]