Beispiel #1
0
        protected void AddDateRangeQuery(BooleanQuery query, DateRangeSearchParam.DateRangeField dateRangeField, BooleanClause.Occur occurance)
        {
            var startDateTime = dateRangeField.StartDate;
             if (dateRangeField.InclusiveStart)
             {
            startDateTime = startDateTime.AddDays(1);
             }
             var startDate = startDateTime.ToString(IndexConstants.DateTimeFormat);

             var endDateTime = dateRangeField.EndDate;
             if (dateRangeField.InclusiveStart)
             {
            endDateTime = endDateTime.AddDays(1);
             }
             var endDate = endDateTime.ToString(IndexConstants.DateTimeFormat);
             BooleanQuery.SetMaxClauseCount(Int32.MaxValue);
             var rangeQuery = new RangeQuery(new Term(dateRangeField.FieldName, startDate), new Term(dateRangeField.FieldName, endDate), true);
             query.Add(rangeQuery, occurance);
        }
Beispiel #2
0
        protected void ApplyDateRangeSearchParam(BooleanQuery query, DateRangeSearchParam param, BooleanClause.Occur innerOccurance)
        {
            if (param.Ranges.Count <= 0) return;

             foreach (var dateParam in param.Ranges)
             {
            AddDateRangeQuery(query, dateParam, innerOccurance);
             }
        }
Beispiel #3
0
        public virtual List<SitecoreItem> GetItemsInRange(DateRangeSearchParam param)
        {
            var globalQuery = new CombinedQuery();

             ApplyLanguageClause(globalQuery, param.Language);
             ApplyTemplateFilter(globalQuery, param.TemplateIds);
             ApplyLocationFilter(globalQuery, param.LocationIds);
             ApplyFullTextClause(globalQuery, param.FullTextQuery);
             ApplyRelationFilter(globalQuery, param.RelatedIds);

             var translator = new QueryTranslator(Index);
             var booleanQuery = translator.ConvertCombinedQuery(globalQuery);
             var innerOccurance = translator.GetOccur(param.Occurance);

             ApplyDateRangeSearchParam(booleanQuery, param, innerOccurance);

             return RunQuery(booleanQuery, param.ShowAllVersions);
        }