private Sitecore.ContentSearch.Linq.FacetResults ExecuteGetFacets(AzureQuery query) { var query1 = query; var list = new List <FacetQuery>(query.FacetQueries); var facetQueries = GetFacetsPipeline.Run(pipeline, new GetFacetsArgs(null, query.FacetQueries, context.Index.Configuration.VirtualFields, context.Index.FieldNameTranslator)).FacetQueries; var facets = new Dictionary <string, ICollection <KeyValuePair <string, int> > >(); foreach (var facetQuery in facetQueries) { foreach (var keyValuePair in GetFacets(query1, facetQuery.FieldNames, new int?(1), Enumerable.Cast <string>(facetQuery.FilterValues), new bool?(), null, facetQuery.MinimumResultCount)) { facets[facetQuery.CategoryName] = keyValuePair.Value; } } var dictionary = ProcessFacetsPipeline.Run(pipeline, new ProcessFacetsArgs(facets, query.FacetQueries, list, context.Index.Configuration.VirtualFields, context.Index.FieldNameTranslator)); foreach (var facetQuery in list) { var originalQuery = facetQuery; if (originalQuery.FilterValues != null && Enumerable.Any(originalQuery.FilterValues) && dictionary.ContainsKey(originalQuery.CategoryName)) { var collection = dictionary[originalQuery.CategoryName]; dictionary[originalQuery.CategoryName] = Enumerable.ToList(Enumerable.Where(collection, (cv => Enumerable.Contains(originalQuery.FilterValues, cv.Key)))); } } var facetResults = new Sitecore.ContentSearch.Linq.FacetResults(); foreach (var keyValuePair in dictionary) { IEnumerable <FacetValue> values = Enumerable.Select(keyValuePair.Value, v => new FacetValue(v.Key, v.Value)); facetResults.Categories.Add(new FacetCategory(keyValuePair.Key, values)); } return(facetResults); }
private FacetResults FormatFacetResults(Dictionary <string, ICollection <KeyValuePair <string, int> > > facetResults, List <FacetQuery> facetQueries) { var fieldTranslator = this.context.Index.FieldNameTranslator as SolrFieldNameTranslator; var processedFacets = ProcessFacetsPipeline.Run(this.pipeline, new ProcessFacetsArgs(facetResults, facetQueries, facetQueries, this.context.Index.Configuration.VirtualFieldProcessors, fieldTranslator)); foreach (var originalQuery in facetQueries) { if (originalQuery.FilterValues == null || !originalQuery.FilterValues.Any()) { continue; } if (!processedFacets.ContainsKey(originalQuery.CategoryName)) { continue; } var categoryValues = processedFacets[originalQuery.CategoryName]; processedFacets[originalQuery.CategoryName] = categoryValues.Where(cv => originalQuery.FilterValues.Contains(cv.Key)).ToList(); } var facetFormattedResults = new FacetResults(); foreach (var group in processedFacets) { if (fieldTranslator == null) { continue; } var key = group.Key; if (key.Contains(",")) { key = fieldTranslator.StripKnownExtensions(key.Split(new[] { ',' }, StringSplitOptions.RemoveEmptyEntries)); } else { key = fieldTranslator.StripKnownExtensions(key); } var values = @group.Value.Select(v => new FacetValue(v.Key, v.Value)); facetFormattedResults.Categories.Add(new FacetCategory(key, values)); } return(facetFormattedResults); }
private FacetResults FormatFacetResults(Dictionary <string, ICollection <KeyValuePair <string, int> > > facetResults, List <FacetQuery> facetQueries) { var fieldNameTranslator = _context.Index.FieldNameTranslator as ElasticSearchFieldNameTranslator; var dictionary = ProcessFacetsPipeline.Run(new ProcessFacetsArgs(facetResults, facetQueries, facetQueries, _context.Index.Configuration.VirtualFieldProcessors, fieldNameTranslator)); using (var enumerator = facetQueries.GetEnumerator()) { while (enumerator.MoveNext()) { var originalQuery = enumerator.Current; if (originalQuery == null || originalQuery.FilterValues == null || !originalQuery.FilterValues.Any() || !dictionary.ContainsKey(originalQuery.CategoryName)) { continue; } var is2 = dictionary[originalQuery.CategoryName]; Func <KeyValuePair <string, int>, bool> func = cv => originalQuery.FilterValues.Contains(cv.Key); dictionary[originalQuery.CategoryName] = is2.Where(func).ToList(); } } var results = new FacetResults(); foreach (var pair in dictionary) { if (fieldNameTranslator == null) { continue; } var key = pair.Key; if (key.Contains(",")) { key = fieldNameTranslator.StripKnownExtensions(key.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)); } else { key = fieldNameTranslator.StripKnownExtensions(key); } var enumerable = from v in pair.Value select new FacetValue(v.Key, v.Value); results.Categories.Add(new FacetCategory(key, enumerable)); } return(results); }
private FacetResults FormatFacetResults(Dictionary <string, ICollection <KeyValuePair <string, int> > > facetResults, List <FacetQuery> facetQueries) { var fieldNameTranslator = this._context.Index.FieldNameTranslator as SolrFieldNameTranslator; var dictionary = ProcessFacetsPipeline.Run(new ProcessFacetsArgs(facetResults, facetQueries, facetQueries, this._context.Index.Configuration.VirtualFieldProcessors, fieldNameTranslator)); foreach (var facetQuery in facetQueries) { var originalQuery = facetQuery; if (originalQuery.FilterValues != null && originalQuery.FilterValues.Any() && dictionary.ContainsKey(originalQuery.CategoryName)) { var collection = dictionary[originalQuery.CategoryName]; /** * ****** UPDATE ****** * Allow ALL Facets to come back from Solr */ dictionary[originalQuery.CategoryName] = collection.Select(cv => cv).ToList(); } } var facetResults1 = new FacetResults(); foreach (var keyValuePair in dictionary) { if (fieldNameTranslator != null) { var key = keyValuePair.Key; string name; if (key.Contains(",")) { name = fieldNameTranslator.StripKnownExtensions(key.Split(new char[1] { ',' }, StringSplitOptions.RemoveEmptyEntries)); } else { name = fieldNameTranslator.StripKnownExtensions(key); } var values = keyValuePair.Value.Select(v => new FacetValue(v.Key, v.Value)); facetResults1.Categories.Add(new FacetCategory(name, values)); } } return(facetResults1); }