public AbstractFieldNameTranslator GetFieldNameTranslator(ISearchIndex index)
        {
            SolrFieldMap           fieldMap      = index.Configuration.FieldMap as SolrFieldMap;
            SolrIndexSchema        schema        = index.Schema as SolrIndexSchema;
            ISettings              instance      = index.Locator.GetInstance <ISettings>();
            SolrIndexConfiguration configuration = index.Configuration as SolrIndexConfiguration;

            Assert.IsNotNull(fieldMap, "FieldMap is null.");
            Assert.IsNotNull(schema, "SolrSchema is null.");
            Assert.IsNotNull(instance, "Settings is null.");
            Assert.IsNotNull(configuration, "This constructor requires SolrIndexConfiguration.");
            TemplateFieldTypeResolverFactory typeResolverFactory = configuration.TemplateFieldTypeResolverFactory;

            Assert.IsNotNull(typeResolverFactory, "normalizerFactory is null.");
            TemplateFieldTypeResolver fieldTypeResolver = typeResolverFactory.Create();

            Assert.IsNotNull(fieldTypeResolver, "FieldTypeResolver is null.");
            SolrFieldConfigurationResolver configurationResolver = new SolrFieldConfigurationResolver(fieldMap, schema, fieldTypeResolver);
            var ctor = typeof(SolrFieldNameTranslator).Assembly
                       .GetType("Sitecore.ContentSearch.SolrProvider.FieldNames.CultureContextGuard")
                       .GetConstructors().First();


            ICultureContextGuard cultureContextGuard = ObjectActivator.GetActivator <ICultureContextGuard>(ctor).Invoke();

            return(new SynthesisSolrFieldNameTranslator(fieldMap, schema, instance, configurationResolver, new ExtensionStripHelper(fieldMap, schema), typeResolverFactory, cultureContextGuard));
        }
            public SolrSearchResults(SolrSearchContext context, SolrQueryResults <Dictionary <string, object> > searchResults, SelectMethod selectMethod, IEnumerable <IExecutionContext> executionContexts, IEnumerable <IFieldQueryTranslator> virtualFieldProcessors)
            {
                this._context = context;
                this._solrIndexConfiguration = (SolrIndexConfiguration)this._context.Index.Configuration;
                this._selectMethod           = selectMethod;
                this._virtualFieldProcessors = virtualFieldProcessors;
                this._executionContexts      = executionContexts;
                this._numberFound            = searchResults.NumFound;
                this._searchResults          = ApplySecurity(searchResults, context.SecurityOptions, ServiceLocator.ServiceProvider.GetService <BaseCorePipelineManager>(), context.Index.Locator.GetInstance <IAccessRight>(), ref this._numberFound);
                var executionContext = this._executionContexts != null?this._executionContexts.FirstOrDefault(c => c is OverrideExecutionContext <IIndexDocumentPropertyMapper <Dictionary <string, object> > >) as OverrideExecutionContext <IIndexDocumentPropertyMapper <Dictionary <string, object> > > : null;

                this._mapper = (executionContext != null ? executionContext.OverrideObject : null) ?? this._solrIndexConfiguration.IndexDocumentPropertyMapper;
            }