Querying examples
This topic describes how to work with queries in Episerver Find, as a replacement for the FindPagesWithCriteria method in Episerver CMS.
Querying scenarios
In addition to providing great, near-real-time search, Episerver Find can also be used to solve other types of querying needs for which we traditionally had to use the FindPagesWithCriteria method for. Below is a number of examples illustrating common querying scenarios specific to Episerver 7/7.5 CMS. See also Searching and Filtering for more examples related to filtering..
Filtering by category
int categoryId = 3; //Category to match
var pages = SearchClient.Instance.Search<PageData>()
.Filter(x => x.Category.Match(categoryId))
.GetContentResult();
Filtering by Author/ChangedBy
var pages = SearchClient.Instance.Search<PageData>()
.Filter(x => x.ChangedBy.Match("Zlatan"))
.GetContentResult();
Filtering by publish date
The following example finds pages published in October 2011.
var pages = SearchClient.Instance.Search<PageData>()
.Filter(x => x.StartPublish.MatchMonth(2011, 10))
.GetContentResult();
var pages = SearchClient.Instance.Search<PageData>()
.Filter(x => x.StartPublish.Before(new DateTime(2011, 10, 1)))
.GetContentResult();
Filtering by page type
When you use typed content, the easiest way to filter by content type is to simply specify the desired type in the type parameter to the Client Search method. However, in that case pages of page types inheriting from the specified type also are matched. In other situations we may not know what type to filter by until at runtime. In both such cases we can filter by the IContent.ContentTypeID.
int contentTypeId = 42;
var pages = SearchClient.Instance.Search<IContent>()
.Filter(x => x.ContentTypeID.Match(contentTypeId))
.GetContentResult();
Filtering by Site ID
In an enterprise scenario with multiple sites all sites utilize the same index. To handle this the return value of an extension method for IContent, named SiteId, is indexed. You can use this to filter for content on a specific site.
var content = SearchClient.Instance.Search<IContent>()
.Filter(x => x.SiteId().Match("MySiteId"))
.GetContentResult();
Related topics
Last updated: Nov 16, 2015