public GetFacetsArgs TranslateFacetQuery(GetFacetsArgs args)
        {
            var facetQueries = args.FacetQueries.ToList();
            var list         = facetQueries.Where(q => (q.FieldNames.Count() == 1) && q.FieldNames.First() == Constants.IndexFields.ContentType).ToList();

            if (list.Count > 0)
            {
                var resultCount = list[0].MinimumResultCount;
                var fieldNames  = new[] { args.FieldNameTranslator.GetIndexFieldName(this.FieldName) };
                facetQueries.Add(new FacetQuery(null, fieldNames, resultCount, null));
                list.ForEach(delegate(FacetQuery f) { facetQueries.Remove(f); });
            }

            return(new GetFacetsArgs(args.BaseQuery, facetQueries, args.VirtualFieldProcessors, args.FieldNameTranslator));
        }
Ejemplo n.º 2
0
        public GetFacetsArgs TranslateFacetQuery(GetFacetsArgs args)
        {
            var facetQueries = args.FacetQueries.ToList();

            var daterangeFacet =
                facetQueries.Where(q => q.FieldNames.Count() == 1 && q.FieldNames.First() == "daterangehourresolution")
                .ToList();

            if (daterangeFacet.Count > 0)
            {
                int?min = daterangeFacet[0].MinimumResultCount;

                facetQueries.Add(new FacetQuery(null,
                                                new[] { args.FieldNameTranslator.GetIndexFieldName("daterange_hour", typeof(string)) }, min,
                                                new[] { DateTime.Now.ToString("yyyyMMddHH") }));
                facetQueries.Add(new FacetQuery(null,
                                                new[] { args.FieldNameTranslator.GetIndexFieldName("__smallcreateddate", typeof(DateTime)) }, min,
                                                new[]
                {
                    DateTime.Now.Date.ToString(ContentSearchConfigurationSettings.IndexDateFormat),
                    DateTime.Now.AddDays(-1).Date.ToString(ContentSearchConfigurationSettings.IndexDateFormat)
                }));
                facetQueries.Add(new FacetQuery(null,
                                                new[] { args.FieldNameTranslator.GetIndexFieldName("daterange_week", typeof(string)) }, min,
                                                new[]
                {
                    DateTime.Now.ToString("yyyyMM") +
                    CultureInfo.InvariantCulture.Calendar.GetWeekOfYear(DateTime.Now, CalendarWeekRule.FirstDay,
                                                                        DayOfWeek.Monday)
                }));
                facetQueries.Add(new FacetQuery(null,
                                                new[] { args.FieldNameTranslator.GetIndexFieldName("daterange_month", typeof(string)) }, min,
                                                new[] { DateTime.Now.ToString("yyyyMM") }));
                facetQueries.Add(new FacetQuery(null,
                                                new[] { args.FieldNameTranslator.GetIndexFieldName("daterange_year", typeof(string)) }, min, null));

                daterangeFacet.ForEach(f => facetQueries.Remove(f));
            }

            return(new GetFacetsArgs(args.BaseQuery, facetQueries, args.VirtualFieldProcessors, args.FieldNameTranslator));
        }