public static IEnumerable <ContentCount> ContentReferenceFacet <T>(this IHasFacetResults <T> result, Expression <Func <T, object> > fieldExpression) where T : ICategorizableContent { TermsFacet facet; try { facet = result.TermsFacetFor(fieldExpression); } catch (Exception) { facet = null; } if (facet == null) { yield break; } var contentLoader = ServiceLocator.Current.GetInstance <IContentLoader>(); foreach (var value in facet.Terms) { ContentReference contentLink; if (ContentReference.TryParse(value.Term, out contentLink) == false) { continue; } IContent content; if (contentLoader.TryGet(contentLink, out content)) { yield return(new ContentCount(content, value.Count)); } } }
public static StatisticalFacet StatisticalFacetForSumOf <TContent>(this IHasFacetResults facetsResultsContainer, params Expression <Func <TContent, object> >[] fieldSelectors) where TContent : IContent { if (!fieldSelectors.Any()) { throw new ArgumentException("'fieldSelectors' needs to contain at least one expression."); } return(GetFacetFor <StatisticalFacet>(facetsResultsContainer, String.Format("StatisticalFacet_{0}", String.Join("_", fieldSelectors.Select(x => x.GetFieldPath()))))); }
public static TFacet GetFacetFor <TFacet>(IHasFacetResults facetsResultsContainer, string facetName) where TFacet : Facet { var facet = facetsResultsContainer.Facets[facetName]; if (facet.IsNull()) { return(null); } return(facet as TFacet); }
public static HierarchicalFacet HierarchicalFacetFor <TResult>(this IHasFacetResults <TResult> facetsResultsContainer, Expression <Func <TResult, Hierarchy> > fieldSelector) { fieldSelector.ValidateNotNullArgument("fieldSelector"); var facetName = fieldSelector.GetFieldPath(); var facet = facetsResultsContainer.Facets[facetName] as TermsFacet; var resultFacet = new HierarchicalFacet(); foreach (var termCount in facet) { if (!termCount.Term.Contains('/')) { // create top path resultFacet.Add(new HierarchyPath { Path = termCount.Term, Count = termCount.Count }); } else { // traversing paths var sections = termCount.Term.Split('/'); var hierarchyPath = resultFacet.Where(x => x.Path.Equals(sections[0])).Single(); for (int i = 2; i < sections.Length; i++) { hierarchyPath = hierarchyPath.Where(x => x.Path.Equals(string.Join("/", sections.Take(i)))).Single(); } hierarchyPath.Add(new HierarchyPath { Path = termCount.Term, Count = termCount.Count }); } } return(resultFacet); }
public static StatisticalFacet StatisticalFacetFor <TContent>(this IHasFacetResults facetsResultsContainer, Expression <Func <TContent, object> > fieldSelector) where TContent : IContent { return(GetFacetFor <StatisticalFacet>(facetsResultsContainer, String.Format("StatisticalFacet_{0}", fieldSelector.GetFieldPath()))); }
public static NumericRangeFacet RangeFacetFor <TContent>(this IHasFacetResults facetsResultsContainer, Expression <Func <TContent, object> > fieldSelector) where TContent : IContent { return(FacetResultExtraction.RangeFacetFor(facetsResultsContainer, fieldSelector)); }
public static DateHistogramFacet HistogramFacetFor <TContent>(this IHasFacetResults facetsResultsContainer, Expression <Func <TContent, DateTime> > fieldSelector) where TContent : IContent { return(FacetResultExtraction.HistogramFacetFor(facetsResultsContainer, fieldSelector)); }
public static GeoDistanceFacet GeoDistanceFacetFor <TContent>(this IHasFacetResults facetsResultsContainer, Expression <Func <TContent, GeoLocation> > fieldSelector) where TContent : IContent { return(FacetResultExtraction.GeoDistanceFacetFor(facetsResultsContainer, fieldSelector)); }
public static IEnumerable <ContentCount> ContentCategoriesFacet <T>(this IHasFacetResults <T> result) where T : ICategorizableContent { return(result.ContentReferenceFacet(x => x.Categories())); }