internal virtual bool ContainsItemsByFields(string ids, string fieldName, string fieldValue) { var globalQuery = new CombinedQuery(); SearcherMethods.ApplyIdFilter(globalQuery, BuiltinFields.ID, ids); SearcherMethods.AddFieldValueClause(globalQuery, fieldName, fieldValue, QueryOccurance.Must); return(this.RunQuery(globalQuery).Value.Any()); }
internal virtual KeyValuePair <int, List <SitecoreItem> > GetItems(FieldValueSearchParam param) { var globalQuery = new CombinedQuery(); SearcherMethods.ApplyLanguageClause(globalQuery, param.Language); if (!string.IsNullOrWhiteSpace(param.FullTextQuery)) { SearcherMethods.ApplyFullTextClause(globalQuery, param.FullTextQuery); } SearcherMethods.ApplyRelationFilter(globalQuery, param.RelatedIds); SearcherMethods.ApplyTemplateFilter(globalQuery, param.TemplateIds); SearcherMethods.ApplyLocationFilter(globalQuery, param.LocationIds); SearcherMethods.ApplyRefinements(globalQuery, param.Refinements, param.Occurance); return(this.RunQuery(globalQuery)); }
internal virtual KeyValuePair <int, List <SitecoreItem> > GetItems(DateRangeSearchParam param) { var db = Context.ContentDatabase ?? Sitecore.Context.Database; if (db != null) { var indexName = Util.Constants.Index.Name; var item = db.GetItem(param.LocationIds); indexName = BucketManager.GetContextIndex(item.IsNotNull() ? item : db.GetItem(Sitecore.ItemIDs.RootID)); if (indexName.EndsWith("_remote")) { Index = RemoteSearchManager.GetIndex(indexName) as RemoteIndex; } else if (indexName.EndsWith("_inmemory")) { Index = InMemorySearchManager.GetIndex(indexName) as InMemoryIndex; } else { Index = SearchManager.GetIndex(indexName) as Index; } if (Index.IsNotNull()) { var globalQuery = new CombinedQuery(); SearcherMethods.ApplyLanguageClause(globalQuery, param.Language); if (!string.IsNullOrWhiteSpace(param.FullTextQuery)) { if (!param.FullTextQuery.StartsWith("*")) { if (param.FullTextQuery != "*All*" && param.FullTextQuery != "*" && param.FullTextQuery != "**") { SearcherMethods.ApplyFullTextClause(globalQuery, param.FullTextQuery, indexName); } } } SearcherMethods.ApplyRelationFilter(globalQuery, param.RelatedIds); SearcherMethods.ApplyTemplateFilter(globalQuery, param.TemplateIds); SearcherMethods.ApplyTemplateNotFilter(globalQuery); SearcherMethods.ApplyIDFilter(globalQuery, param.ID); if (param.LocationIds.Contains("|")) { SearcherMethods.ApplyCombinedLocationFilter(globalQuery, param.LocationIds); } else { SearcherMethods.ApplyLocationFilter(globalQuery, param.LocationIds); } if (!param.Refinements.ContainsKey("__workflow state")) //Hack!!!!! { SearcherMethods.ApplyRefinements(globalQuery, param.Refinements, QueryOccurance.Should); } SearcherMethods.ApplyLatestVersion(globalQuery); if (Config.ExcludeContextItemFromResult) { SearcherMethods.ApplyContextItemRemoval(globalQuery, param.LocationIds); } var translator = new QueryTranslator(Index); var booleanQuery = translator.ConvertCombinedQuery(globalQuery); var innerOccurance = translator.GetOccur(param.Occurance); if (!string.IsNullOrWhiteSpace(param.FullTextQuery)) { if (param.FullTextQuery.StartsWith("*")) { if (param.FullTextQuery != "*All*" && param.FullTextQuery != "*" && param.FullTextQuery != "**") { SearcherMethods.ApplyFullTextClause(booleanQuery, param.FullTextQuery, indexName); } } } SearcherMethods.ApplyAuthor(booleanQuery, param.Author); SearcherMethods.ApplyDateRangeSearchParam(booleanQuery, param, innerOccurance); if (param.Refinements.ContainsKey("__workflow state")) { SearcherMethods.AddFieldValueClause(booleanQuery, "__workflow state", param.Refinements["__workflow state"], QueryOccurance.Should); } if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug) { Log.Info("Search Clauses Number: " + booleanQuery.Clauses().Count, this); } if (!param.SortByField.IsNullOrEmpty()) { return(this.RunQuery(booleanQuery, param.PageSize, param.PageNumber, param.SortByField, param.SortDirection)); } return(param.PageNumber != 0 ? this.RunQuery(booleanQuery, param.PageSize, param.PageNumber) : this.RunQuery(booleanQuery, 20, 0)); } } return(new KeyValuePair <int, List <SitecoreItem> >()); }
public static BooleanQuery ContructQuery(DateRangeSearchParam param) { var indexName = BucketManager.GetContextIndex(Context.ContentDatabase.GetItem(param.LocationIds)); if (indexName.EndsWith("_remote")) { Index = RemoteSearchManager.GetIndex(indexName) as RemoteIndex; } else if (indexName.EndsWith("_inmemory")) { Index = InMemorySearchManager.GetIndex(indexName) as InMemoryIndex; } else { Index = SearchManager.GetIndex(indexName) as Index; } if (Index.IsNotNull()) { var globalQuery = new CombinedQuery(); var fullTextQuery = param.FullTextQuery; // .TrimStart('*').TrimEnd('*') + "*"; SearcherMethods.ApplyLanguageClause(globalQuery, param.Language); if (!string.IsNullOrWhiteSpace(fullTextQuery)) { if (!fullTextQuery.StartsWith("*")) { SearcherMethods.ApplyFullTextClause(globalQuery, fullTextQuery, indexName); } } SearcherMethods.ApplyRelationFilter(globalQuery, param.RelatedIds); SearcherMethods.ApplyTemplateFilter(globalQuery, param.TemplateIds); SearcherMethods.ApplyTemplateNotFilter(globalQuery); SearcherMethods.ApplyIDFilter(globalQuery, param.ID); SearcherMethods.ApplyLocationFilter(globalQuery, param.LocationIds); SearcherMethods.ApplyRefinements(globalQuery, param.Refinements, QueryOccurance.Should); SearcherMethods.ApplyLatestVersion(globalQuery); if (Config.ExcludeContextItemFromResult) { SearcherMethods.ApplyContextItemRemoval(globalQuery, param.LocationIds); } var translator = new QueryTranslator(Index); var booleanQuery = translator.ConvertCombinedQuery(globalQuery); var innerOccurance = translator.GetOccur(param.Occurance); if (!string.IsNullOrWhiteSpace(fullTextQuery)) { if (fullTextQuery.StartsWith("*")) { SearcherMethods.ApplyFullTextClause(booleanQuery, fullTextQuery, indexName); } } SearcherMethods.ApplyAuthor(booleanQuery, param.Author); SearcherMethods.ApplyDateRangeSearchParam(booleanQuery, param, innerOccurance); if (Config.EnableBucketDebug || Constants.EnableTemporaryBucketDebug) { Log.Info("Search Clauses Number: " + booleanQuery.Clauses().Count, booleanQuery); } return(booleanQuery); } return(null); }
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); }