HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In


Optimizely Search & Navigation 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.

The following functionality is included:

  • [Multi-language stemming](🔗)

  • [Best Bets](🔗)

  • [Related queries](🔗)

  • [Highlighted summaries](🔗)

  • [Autocomplete](🔗)

  • [Search in files/attachments](🔗)

  • [Custom weighting of results](🔗)

  • [Statistics](🔗)

Note

To ensure maximum availability and scaling flexibility, Optimizely 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.

## Architecture

Optimizely Search & Navigation consists of a back-end software service, and a front-end facing client used for building the site search functionality. There are various integration options available for integrating Search & Navigation with Optimizely Content Management System (CMS) and Optimizely Customized Commerce, as well as other platforms. Optimizely Search & Navigation is used as default search solution when running CMS using the [Optimizely Digital Experience Platform cloud service](🔗).

Behind the scenes there are numerous back-end systems used for provisioning, indexing, querying, and monitoring the service, based on modern infrastructure components.

#### Provisioning of service account and index



#### Indexing content



#### Querying content



## REST API

Optimizely Search & Navigation is built using the [Elasticsearch](🔗) search engine. The Optimizely 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.

## Integration

Optimizely Search & Navigation is the foundation for search functionality in CMS and Optimizely Customized Commerce. It is integrated using a .NET-based client API, and interaction with the REST API through JavaScript is done using JSON. However, Optimizely Search & Navigation is not limited to being used from .NET.



Important

Optimizely 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 Optimizely Search & Navigation.

## Language support and analysis

You can index any content language with Optimizely Search & Navigation, but to get the best search results, a _language analyzer_ is used. This is available for a _specific set of content languages._ When purchasing Optimizely Search & Navigation you will order an index and specify analyzer support for a defined set of languages.

Search queries in any of these supported languages will run through the language analyzer, and search results delivered will be richer and more nuanced than for unsupported content languages. While content in unsupported languages is indexed and searchable, no analysis is done. See [Elasticsearch Analysis and Analyzers](🔗).

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, Optimizely Search & Navigation [optimization](🔗) only works with supported languages.

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

**Indexing languages with analytics support**

  • Arabic

  • Armenian

  • Basque

  • Brazilian

  • Bulgarian

  • Catalan

  • Chinese

  • Cjk (Chinese, Japanese, and Korean)

  • Czech

  • Danish

  • Dutch

  • English

  • Finnish

  • French

  • Galician

  • German

  • Greek

  • Hindi

  • Hungarian

  • Indonesian

  • Irish

  • Italian

  • Latvian

  • Norwegian

  • Persian

  • Polish

  • Portuguese

  • Romanian

  • Russian

  • Spanish

  • Swedish

  • Thai

  • Turkish

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 ecommerce, and can result in lower conversion rates.

Optimizely 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 the Swedish word "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 Optimizely.Search & Navigation 12.3.0]**

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



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**.

See also: [Elasticsearch guide](🔗)