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);
        }