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 not exposed as objects' properties.
By customizing the Client
conventions, you can include just about any value indexed by including delegates whose return value is included 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 about 1 hour ago