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));
                }
            }
        }
Пример #2
0
        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())))));
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
 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())));
 }
Пример #6
0
 public static NumericRangeFacet RangeFacetFor <TContent>(this IHasFacetResults facetsResultsContainer,
                                                          Expression <Func <TContent, object> > fieldSelector) where TContent : IContent
 {
     return(FacetResultExtraction.RangeFacetFor(facetsResultsContainer, fieldSelector));
 }
Пример #7
0
 public static DateHistogramFacet HistogramFacetFor <TContent>(this IHasFacetResults facetsResultsContainer,
                                                               Expression <Func <TContent, DateTime> > fieldSelector) where TContent : IContent
 {
     return(FacetResultExtraction.HistogramFacetFor(facetsResultsContainer, fieldSelector));
 }
Пример #8
0
 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()));
 }