public LuceneSearchWithSpatialContext(ILuceneProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) : base(index, securityOptions) { Assert.ArgumentNotNull(index, "index"); this.index = index; this.settings = this.index.Locator.GetInstance <IContentSearchConfigurationSettings>(); }
public AlgoliaSearchContext(AlgoliaBaseIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) { Assert.ArgumentNotNull(index, "index"); this.Index = index; this.SecurityOptions = securityOptions; }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { if (this.Group != IndexGroup.Experience) { return(new Sitecore.Spatial.GeoJson.Providers.Solr.SolrSearchContext(this, options)); } return(new SolrAnalyticsSearchContext(this, options)); }
public SolrSearchWithSpatialContext(SolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck) : base(index, options) { Assert.ArgumentNotNull((object)index, "index"); Assert.ArgumentNotNull((object)options, "options"); this.index = index; this.contentSearchSettings = this.index.Locator.GetInstance <IContentSearchConfigurationSettings>(); this.settings = this.index.Locator.GetInstance <ISettings>(); this.securityOptions = options; }
public AzureSearchContext(IAzureProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.Default) { Index = index; if (securityOptions == SearchSecurityOptions.Default) { SecurityOptions = index.Configuration.DefaultSearchSecurityOption; } else { SecurityOptions = securityOptions; } Settings = Index.Locator.GetInstance <IContentSearchConfigurationSettings>(); }
public override TElement MapToType <TElement>(Document document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, IEnumerable <IExecutionContext> executionContexts, SearchSecurityOptions securityOptions) { var typeOfTElement = typeof(TElement); if (!typeof(IItemWrapper).IsAssignableFrom(typeOfTElement)) { return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, executionContexts, securityOptions)); } Guid itemId; Guid templateId; var fields = ExtractFieldsFromDocument(document, virtualFieldProcessors); if (fields.ContainsKey(Templates.Fields.Group) && fields.ContainsKey(Templates.Fields.TemplateName) && Guid.TryParse(fields[Templates.Fields.Group].ToString(), out itemId) && Guid.TryParse(fields[Templates.Fields.TemplateName].ToString(), out templateId)) { var item = Global.SpawnProvider.FromItem(itemId, templateId, typeOfTElement, fields); if (item is TElement) { return((TElement)item); } } if (fields.ContainsKey(Templates.Fields.UniqueId)) { var id = fields[Templates.Fields.UniqueId].ToString(); var uri = ItemUri.Parse(id); var item = Sitecore.Context.Database.GetItem(uri.ToDataUri()); if (item != null) { var mappedItem = Global.SpawnProvider.FromItem(item); if (mappedItem is TElement) { return((TElement)mappedItem); } } } return(default(TElement)); }
public SSSolrSearchContext(SSSolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.Default) { Assert.ArgumentNotNull(index, nameof(index)); Assert.ArgumentNotNull(options, nameof(options)); if (options == SearchSecurityOptions.Default) { options = index.Configuration.DefaultSearchSecurityOption; } this.index = index; contentSearchSettings = index.Locator.GetInstance <IContentSearchConfigurationSettings>(); settings = index.Locator.GetInstance <ISettings>(); securityOptions = options; var solrUrl = $"{SolrContentSearchManager.SolrSettings.ServiceAddress().TrimEnd('/')}/"; _api = new SearchContext(new System.Net.Http.HttpClient { BaseAddress = new Uri(solrUrl) }, index.Core, new SitecoreNodeTranslator(new FieldTranslator(index.FieldNameTranslator)), new ResposeTranslator(index.FieldNameTranslator)); }
public override TElement MapToType <TElement>(Dictionary <string, object> document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, IEnumerable <IExecutionContext> executionContexts, SearchSecurityOptions securityOptions) { ConvertDocumentToSythesisStandardTemplate(document); var mappingResult = _synthesisMapper.MapToType <TElement>(() => ExtractFieldsFromDocument(document, virtualFieldProcessors), selectMethod); // if the result type is not IStandardTemplateItem, use the default functionality if (!mappingResult.MappedSuccessfully) { return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, executionContexts, securityOptions)); } return(mappingResult.Document); }
protected SpatialLuceneSearchContext(ILuceneProviderIndex index, CreateSearcherOption options = CreateSearcherOption.Writeable, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) : base(index, options, securityOptions) { }
public SpatialLuceneSearchContext(ILuceneProviderIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) : base(index, securityOptions) { spatialFilterContext = new SpatialFilterContext(new SpatialFilterContext.CriterionContainer()); }
public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck) { //START: post 9 return(new XmlSearchContext(this, options)); //END: post 9 }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) { this.EnsureInitialized(); return(new SpatialLuceneSearchContext(this, securityOptions)); }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { return(new SSSolrSearchContext(this, options)); }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) { this.EnsureInitialized(); return new SpatialLuceneSearchContext(this, securityOptions); }
public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { throw new NotImplementedException(); }
public override IProviderSearchContext CreateSearchContext( SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck) { return(new AlgoliaSearchContext(this, options)); }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { this.EnsureInitialized(); return new AzureSearchContext(this, options); }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { this.EnsureInitialized(); return(new AzureSearchContext(this, options)); }
private static IQueryResponse <Dictionary <string, object> > ApplySecurity(IQueryResponse <Dictionary <string, object> > queryResults, SearchSecurityOptions options, ref int resultsTotal) { if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck)) { var hitsToRemove = new HashSet <IHit <Dictionary <string, object> > >(); foreach (var hit in from searchResult in queryResults.Hits.Hits where searchResult != null select searchResult) { object uniqueId; if (!hit.Source.TryGetValue("_uniqueid", out uniqueId)) //TODO: shouldn't have to use the Source property here, the Fields property should be populated. probably something wrong with field mapping. { continue; } object datasource; hit.Source.TryGetValue("_datasource", out datasource); //TODO: shouldn't have to use the Source property here, the Fields property should be populated. probably something wrong with field mapping. if (!OutboundIndexFilterPipeline.CheckItemSecurity(new OutboundIndexFilterArgs((string)uniqueId, (string)datasource))) { continue; } hitsToRemove.Add(hit); } foreach (var hit in hitsToRemove) { queryResults.Hits.Hits.Remove(hit); resultsTotal--; } } return(queryResults); }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { throw new NotImplementedException(); }
public override TElement MapToType <TElement>(Dictionary <string, object> document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, SearchSecurityOptions securityOptions) { var typeOfTElement = typeof(TElement); if (!typeof(IItemWrapper).IsAssignableFrom(typeOfTElement)) { return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, securityOptions)); } Guid itemId; Guid templateId; if (document.ContainsKey(Templates.Fields.Group) && document.ContainsKey(Templates.Fields.TemplateName) && Guid.TryParse(document[Templates.Fields.Group].ToString(), out itemId) && Guid.TryParse(document[Templates.Fields.TemplateName].ToString(), out templateId)) { var item = Global.SpawnProvider.FromItem(itemId, templateId, typeOfTElement, document); if (item is TElement) { return((TElement)item); } } return(default(TElement)); }
private static SolrQueryResults <Dictionary <string, object> > ApplySecurity(SolrQueryResults <Dictionary <string, object> > solrQueryResults, SearchSecurityOptions options, ICorePipeline pipeline, IAccessRight accessRight, ref int numberFound) { if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck)) { var removalList = new HashSet <Dictionary <string, object> >(); foreach (var searchResult in solrQueryResults.Where(searchResult => searchResult != null)) { object secToken; object dataSource; if (!searchResult.TryGetValue(BuiltinFields.UniqueId, out secToken)) { continue; } searchResult.TryGetValue(BuiltinFields.DataSource, out dataSource); var isExcluded = OutboundIndexFilterPipeline.CheckItemSecurity(pipeline, accessRight, new OutboundIndexFilterArgs((string)secToken, (string)dataSource)); if (isExcluded) { removalList.Add(searchResult); numberFound = numberFound - 1; } } foreach (var item in removalList) { solrQueryResults.Remove(item); } } return(solrQueryResults); }
public ElasticSearchContext(ElasticSearchIndex index, SearchSecurityOptions securityOptions = SearchSecurityOptions.EnableSecurityCheck) { Index = index; SecurityOptions = securityOptions; }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { return(null); }
public IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck) { return(new ElasticSearchContext(this, options)); }
public override TElement MapToType <TElement>(Document document, SelectMethod selectMethod, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors, SearchSecurityOptions securityOptions) { if (typeof(TElement) == typeof(SitecoreUISearchResultItem)) { return(base.MapToType <TElement>(document, selectMethod, virtualFieldProcessors, securityOptions)); } _sitecoreContext = new SitecoreContext(); if (selectMethod != null) { var parameters = selectMethod.Delegate.Method.GetParameters(); if (parameters.Length != 2) { throw new InvalidOperationException("Invalid number of select delegate parameters."); } var underlyingSystemType = parameters[1].ParameterType.UnderlyingSystemType; var instance = Activator.CreateInstance(underlyingSystemType); var strArray = selectMethod.FieldNames == null || selectMethod.FieldNames.Length <= 0 ? null : selectMethod.FieldNames; ReadDocumentFields(document, strArray, GetTypeMap(underlyingSystemType), virtualFieldProcessors, instance); return((TElement)selectMethod.Delegate.DynamicInvoke(instance)); } else { var documentFieldNames = GetDocumentFieldNames(document); var templateId = document.Get("_template"); var instance = CreateInstance <TElement>(templateId); var typeMap = GetTypeMap(instance.GetType()); //TODO: use ID.Parse on document.Get("_id") ? Guid id; if (Guid.TryParse(document.Get("_group"), out id)) { SetupProxy(id, document.GetFields().Select(x => x.Name.ToLower()), (object)instance as IProxyTargetAccessor); } ReadDocumentFields(document, documentFieldNames, typeMap, virtualFieldProcessors, instance); return(instance); } }
public override IProviderSearchContext CreateSearchContext(SearchSecurityOptions options = SearchSecurityOptions.Default) { return null; }
private static SolrQueryResults <Dictionary <string, object> > ApplySecurity(SolrQueryResults <Dictionary <string, object> > solrQueryResults, SearchSecurityOptions options, BaseCorePipelineManager pipeline, IAccessRight accessRight, ref int numberFound) { if (!options.HasFlag(SearchSecurityOptions.DisableSecurityCheck)) { var hashSet = new HashSet <Dictionary <string, object> >(); foreach (var dictionary in solrQueryResults.Where(searchResult => searchResult != null)) { object obj1; if (dictionary.TryGetValue("_uniqueid", out obj1)) { object obj2; dictionary.TryGetValue("_datasource", out obj2); var args = new OutboundIndexFilterArgs((string)obj1, (string)obj2) { AccessRight = accessRight.ItemRead() }; pipeline.Run("indexing.filterIndex.outbound", args); if (args.IsExcluded) { hashSet.Add(dictionary); numberFound = numberFound - 1; } } } foreach (var dictionary in hashSet) { solrQueryResults.Remove(dictionary); } } return(solrQueryResults); }
public SolrSearchContext(Sitecore.ContentSearch.SolrProvider.SolrSearchIndex index, SearchSecurityOptions options = SearchSecurityOptions.EnableSecurityCheck) : base(index, options) { this.settings = this.Index.Locator.GetInstance <IContentSearchConfigurationSettings>(); }