The Optimizely Search & Navigation integration builds on a .NET-based client API, adding functionality for automatically indexing objects, and methods for filtering, retrieving, and caching results.
## Installation
CMS 12 and Commerce 14
See [Installing Optimizely .NET5](🔗).
Integration components including the .NET API are installed as NuGet packages available in the Optimizely NuGet feed, see [Installing Optimizely updates (CMS 11 and Commerce 13)](🔗).
The following packages are used for Search & Navigation-specific integrations:
_Episerver.Find.Cms_ – Integration of Find REST API with Optimizely Content Management System (CMS).
_EPiServer.Find_ – The .NET client API for the Find REST API (installed with _EPiServer.Find.Cms_).
_EPiServer.Find.Framework_ – General integration components for the Find REST API (installed with _EPiServer.Find.Cms_).
_EPiServer.Find.Cms.AttachmentFilter_ – File type parser for CMS attachments.
_EPiServer.Commerce.FindSearchProvider_ – Integration components for Optimizely Customized Commerce, see [Commerce integration](🔗).
_EPiServer.Find.Commerce_ – Integration components for Optimizely Customized Commerce, see [Commerce integration](🔗).
_EPiServer.Find.Personalization_ – Integration components for Personalized Search & Navigation.
Reference needed assemblies in your project, and add the [standard configuration for the .NET API to web.config](🔗).
Note
f you installed Optimizely Search & Navigation with a sample site through the Visual Studio extensions, the integration with CMS is automatically set up.
## SearchClient.Instance
When working with the general .NET API, you typically create an instance of the `IClient
` class using the `Client.CreateFromConfig
` method. Following the general development pattern, the Optimizely integration provides a singleton instance in the form of the `SearchClient
` class and its `Instance
` property. The returned instance is a regular `IClient
`, but some modifications are made to it at start up. In other words, when working with CMS and Search & Navigation, be sure to use `SearchClient.Instance
`.
Note
Differences between the authentication mechanism of _EPiServer.ServiceAPI_ and _EPiServer.Find_ may lead to the incorrect functioning of user authentication. To avoid these problems, it is recommended to install _EPiServer.ServiceAPI_ in a separate application.