示例#1
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);
        }
 void IShouldGetAHierarchicalFacet()
 {
     facet = result.HierarchicalFacetFor(x => x.Hierarchy);
     facet.Should().NotBeEmpty();
 }
示例#3
0
 void IShouldGetAHierarchicalFacet()
 {
     facet = result.HierarchicalFacetFor(x => x.Hierarchy);
     facet.Should().NotBeEmpty();
 }