HomeDev GuideAPI Reference
Dev GuideAPI ReferenceLegal TermsDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Include fields

Describes how to customize Client conventions to include fields to be indexed in Optimizely Search & Navigation.

In some situations, especially when working with classes from third-party libraries, you can index values that are not exposed as objects' properties.

By customizing the Client conventions, you can include just about any value indexed by including delegates with a return value when indexing. These delegates can use methods, extension methods, and operations on the properties exposed by the indexed object.

Given a BlogPost class with a list of tags, you can include the tag count by configuring the Client conventions to include an expression that retrieves it.

//using EPiServer.Find.ClientConventions;
client.Conventions.ForInstancesOf<BlogPost>()
  .IncludeField(x => x.Tags.Count());

You can then search and filter for the indexed value:

client.Search<BlogPost>()
  .Filter(x => x.Tags.Count().Match(firstIndexedObject.Tags.Count()))
  .GetResult();

You also can supply a delegate to set the value when returned in a search result.

client.Conventions.ForInstancesOf<BlogPost>()
  .IncludeField(x => x.GetSomeField(), (x, value) => x.SetSomeField(value));