public virtual QueryFilter GenreQueryFilter(Query query, bool isFacet, bool isIdLookup, string termName, string terms) { var tempTerms = terms; var newGuid = new Guid(); var isGuid = Guid.TryParse(terms, out newGuid); if (isGuid) { tempTerms = IdHelper.NormalizeGuid(terms, true); } var genreQueryFilter = new QueryFilter(query); if (!isFacet) { if (termName == "_language" || isIdLookup) { var termValueParse = terms.Split('|')[0].ToLowerInvariant(); if (isIdLookup) { termValueParse = IdHelper.NormalizeGuid(termValueParse, true); } genreQueryFilter = new QueryFilter( new TermQuery(new Term(termName.ToLowerInvariant(), termValueParse))); } else if (termName == "size" || termName == "dimensions") { var term = new BooleanQuery(); term.Add(new TermQuery(new Term(termName, terms)), BooleanClause.Occur.MUST); genreQueryFilter = new QueryFilter(term); } else { genreQueryFilter = new QueryFilter( new TermQuery(new Term(terms.Split('|')[0].ToLowerInvariant(), termName.ToLowerInvariant()))); } } else { if (termName == "__created by") { genreQueryFilter = new QueryFilter(new TermQuery(new Term(termName, tempTerms))); } else { if (Config.ExcludeContextItemFromResult) { if (termName == "_path") { var term = new BooleanQuery(); term.Add(new TermQuery(new Term(termName, tempTerms.ToLowerInvariant())), BooleanClause.Occur.MUST); term.Add(new TermQuery(new Term(BuiltinFields.ID, tempTerms.ToLowerInvariant())), BooleanClause.Occur.MUST_NOT); genreQueryFilter = new QueryFilter(term); } else { var term = new TermQuery(new Term(termName, tempTerms.ToLowerInvariant())); genreQueryFilter = new QueryFilter(term); } } else { var term = new TermQuery(new Term(termName, tempTerms.ToLowerInvariant())); genreQueryFilter = new QueryFilter(term); } } } if (termName == "__smallCreatedDate") { var dateStart = terms.Split('|')[0]; var typeOfDate = terms.Split('|')[1]; var dateEnd = new DateTime(); if (typeOfDate == "Within a Day") { dateEnd = DateTime.Now; } if (typeOfDate == "Within a Week") { dateEnd = DateTime.Now.AddDays(-1); } if (typeOfDate == "Within a Month") { dateEnd = DateTime.Now.AddDays(-7); } if (typeOfDate == "Within a Year") { dateEnd = DateTime.Now.AddMonths(-1); } if (typeOfDate == "Older") { dateEnd = DateTime.Now.AddYears(-1); } var boolQuery = new BooleanQuery(true); SearcherMethods.AddDateRangeQuery(boolQuery, new DateRangeSearchParam.DateRangeField(termName, DateTime.Parse(dateStart), dateEnd) { InclusiveEnd = true, InclusiveStart = true }, BooleanClause.Occur.MUST); genreQueryFilter = new QueryFilter(boolQuery); if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug) { Log.Info("Search Clauses Number: " + boolQuery.Clauses().Count, this); } } return(genreQueryFilter); }