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));
Updated 7 months ago