Exemplo n.º 1
0
        public ContentTypesFilterForms(IShapeFactory shapeFactory, IIndexProvider indexProvider)
        {
            _shapeFactory = shapeFactory;
            _indexProvider = indexProvider;

            T = NullLocalizer.Instance;
        }
        public void Setup()
        {
            if (Directory.Exists(_basePath))
            {
                Directory.Delete(_basePath, true);
            }
            Directory.CreateDirectory(_basePath);

            _appDataFolder = AppDataFolderTests.CreateAppDataFolder(_basePath);

            var builder = new ContainerBuilder();

            builder.RegisterType <DefaultLuceneAnalyzerProvider>().As <ILuceneAnalyzerProvider>();
            builder.RegisterType <DefaultLuceneAnalyzerSelector>().As <ILuceneAnalyzerSelector>();
            builder.RegisterType <LuceneIndexProvider>().As <IIndexProvider>();
            builder.RegisterInstance(_appDataFolder).As <IAppDataFolder>();

            // setting up a ShellSettings instance
            _shellSettings = new ShellSettings {
                Name = "My Site"
            };
            builder.RegisterInstance(_shellSettings).As <ShellSettings>();

            _container = builder.Build();
            _provider  = _container.Resolve <IIndexProvider>();
        }
Exemplo n.º 3
0
        public bool UpdateIndex(string indexName)
        {
            ILockFile lockFile         = null;
            var       settingsFilename = GetSettingsFileName(indexName);
            var       lockFilename     = settingsFilename + ".lock";

            // acquire a lock file on the index
            if (!lockFileManager.TryAcquireLock(lockFilename, ref lockFile))
            {
                logger.Value.Info("Index was requested but is already running");
                return(false);
            }

            using (lockFile)
            {
                if (!indexManager.HasIndexProvider())
                {
                    return(false);
                }

                // load index settings to know what is the current state of indexing
                var indexSettings = LoadSettings(indexName);

                indexProvider = indexManager.GetSearchIndexProvider();
                indexProvider.CreateIndex(indexName);

                return(UpdateIndex(indexName, settingsFilename, indexSettings));
            }
        }
 public ContentOwnershipController(
     IMasterDetailPermissionManager masterDetailPermissionManager,
     IBasicDataService basicDataService,
     IActivityStreamService activityStreamService,
     IWorkContextAccessor workContextAccessor,
     IIndexProvider indexProvider,
     IOrchardServices orchardServices,
     IWidgetService widgetService,
     ICRMContentOwnershipService contentOwnershipService,
     IContentOwnershipHelper contentOwnershipHelper,
     IRepository <UserRolesPartRecord> userRolesRepository,
     IRepository <ContentItemPermissionDetailRecord> permissionDetailRecordRepository)
 {
     this.masterDetailPermissionManager = masterDetailPermissionManager;
     this.basicDataService      = basicDataService;
     this.activityStreamService = activityStreamService;
     this.workContextAccessor   = workContextAccessor;
     this.indexProvider         = indexProvider;
     this.T = NullLocalizer.Instance;
     this.contentOwnershipHelper           = contentOwnershipHelper;
     this.userRolesRepository              = userRolesRepository;
     this.contentOwnershipService          = contentOwnershipService;
     this.orchardServices                  = orchardServices;
     this.widgetService                    = widgetService;
     this.permissionDetailRecordRepository = permissionDetailRecordRepository;
 }
Exemplo n.º 5
0
        private async Task Index <T>(IIndexProvider <T> indexProvider, Action <int> pageProgress, CancellationToken token) where T : class
        {
            var       i              = await indexProvider.StartIndexingFrom;
            const int batchSize      = 8;
            var       iteration      = 1;
            var       shouldContinue = true;

            await indexProvider.Init();

            while (shouldContinue && !token.IsCancellationRequested)
            {
                var(items, couldBeMore) = await indexProvider.GetBatchToIndex(i, batchSize);

                if (items.Any())
                {
                    await _indexingClient.Index(items, indexProvider.IndexName, token);
                }

                i += batchSize;

                if (couldBeMore && pageProgress != null && iteration % 10 == 0)
                {
                    pageProgress(i);
                }
                shouldContinue = couldBeMore;
                iteration++;
            }
        }
 public FolderController(
     IIndexProvider indexProvider,
     IContentOwnershipHelper contentOwnershipHelper,
     ICRMContentOwnershipService crmContentOwnershipService,
     IExtendedContentManager extendedContentManager,
     ITransactionManager transactionManager,
     IWidgetService widgetService,
     IThemeAwareViewEngine themeAwareViewEngine,
     IShapeFactory shapeFactory,
     IContentManager contentManager,
     IOrchardServices services,
     IDisplayHelperFactory displayHelperFactory,
     IBusinessUnitService businessUnitService,
     ISiteService siteService,
     IBasicDataService basicDataService,
     IContentDefinitionManager contentDefinitionManager,
     IIndexManager indexManager,
     IWorkContextAccessor workContextAccessor,
     IActivityStreamService activityStreamService,
     IContentItemDescriptorManager contentItemDescriptorManager)
     : base(ContentTypes.FolderContentType, "Folder_Edit", indexProvider, services, crmContentOwnershipService, transactionManager, extendedContentManager, contentManager, widgetService, themeAwareViewEngine, shapeFactory, displayHelperFactory, basicDataService, contentOwnershipHelper, activityStreamService, contentItemDescriptorManager)
 {
     this.T      = NullLocalizer.Instance;
     this.Logger = NullLogger.Instance;
 }
Exemplo n.º 7
0
        public ContentTypesFilterForms(IShapeFactory shapeFactory, IIndexProvider indexProvider)
        {
            _shapeFactory  = shapeFactory;
            _indexProvider = indexProvider;

            T = NullLocalizer.Instance;
        }
Exemplo n.º 8
0
        public UserController(
            IMasterDetailPermissionManager masterDetailPermissionManager,
            IIndexProvider indexProvider,
            IContentOwnershipHelper contentOwnershipHelper,
            IExtendedProjectService projectService,
            IHelperService helperService,
            IOrchardServices services,
            IActivityStreamService activityStreamService,
            ICRMContentOwnershipService contentOwnershipService,
            IBasicDataService basicDataService,
            IMembershipService membershipService,
            IUserService userService,
            IShapeFactory shapeFactory,
            IEnumerable <IUserEventHandler> userEventHandlers,
            ISiteService siteService)
        {
            this.masterDetailPermissionManager = masterDetailPermissionManager;
            this.indexProvider           = indexProvider;
            this.contentOwnershipHelper  = contentOwnershipHelper;
            this.projectService          = projectService;
            this.activityStreamService   = activityStreamService;
            this.contentOwnershipService = contentOwnershipService;
            this.basicDataService        = basicDataService;
            this.services      = services;
            this.helperService = helperService;
            _membershipService = membershipService;
            _userService       = userService;
            _userEventHandlers = userEventHandlers;
            _siteService       = siteService;

            T     = NullLocalizer.Instance;
            Shape = shapeFactory;
        }
Exemplo n.º 9
0
        public static void Print <TKey, TValue>(ref int line, IIndexProvider provider, DisplayableProperty <TKey, TValue> generalProperties, AttributeList list) where TValue : Tuple
        {
            int        lineOffset = -1;
            List <int> indexes    = provider.GetIndexes();

            for (int i = 0; i < indexes.Count; i += 2)
            {
                if (indexes[i] > -1 && indexes[i] < list.Attributes.Count && list.Attributes[indexes[i]].Visibility == VisibleState.Visible)
                {
                    generalProperties.AddLabel(list.Attributes[indexes[i]], ++lineOffset, 0, false);
                    generalProperties.AddProperty(list.Attributes[indexes[i]], lineOffset, 1);
                }

                if (i + 1 < indexes.Count)
                {
                    if (indexes[i + 1] > -1 && indexes[i + 1] < list.Attributes.Count && list.Attributes[indexes[i + 1]].Visibility == VisibleState.Visible)
                    {
                        generalProperties.AddLabel(list.Attributes[indexes[i + 1]], lineOffset, 3, false);
                        generalProperties.AddProperty(list.Attributes[indexes[i + 1]], lineOffset, 4);
                    }
                }

                lineOffset++;
                line += 2;
            }
        }
Exemplo n.º 10
0
        public LibraryFile(IGroup group, string path, IIndexProviderFactory factory)
        {
            Group = group;
            Name  = Path.GetFileName(path);

            fileIndex = factory.Create(this);
        }
        public InitializeLuceneSearchIndexesAction(IIndexProvider indexProvider, IMediator mediator)
        {
            Prevent.ParameterNull(indexProvider, nameof(indexProvider));
            Prevent.ParameterNull(mediator, nameof(mediator));

            _indexProvider = indexProvider;
            _mediator      = mediator;
        }
Exemplo n.º 12
0
 public TesterDbContext([NotNull] IModelStore store,
                        [NotNull] IIndexProvider indexProvider,
                        DbContextOptions options) :
     base(options)
 {
     _store         = store ?? throw new ArgumentNullException(nameof(store));
     _indexProvider = indexProvider ?? throw new ArgumentNullException(nameof(indexProvider));
 }
        public RemoveDocumentDirectoryCommandHandler(IDatabase database, IIndexProvider indexProvider)
        {
            Prevent.ParameterNull(database, nameof(database));
            Prevent.ParameterNull(indexProvider, nameof(indexProvider));

            _database      = database;
            _indexProvider = indexProvider;
        }
Exemplo n.º 14
0
 public ContentService(
     IIndexProvider indexProvider, ISearchProvider searchProvider,
     IDeleteProvider deleteProvider, IUpdateProvider updateProvider)
 {
     _indexProvider  = indexProvider;
     _searchProvider = searchProvider;
     _deleteProvider = deleteProvider;
     _updateProvider = updateProvider;
 }
        public static IStore RegisterIndexes(this IStore store, IIndexProvider indexProvider)
        {
            if (indexProvider != null)
            {
                return(store.RegisterIndexes(new[] { indexProvider }));
            }

            return(store.RegisterIndexes(new IIndexProvider[0]));
        }
        public static IStore RegisterIndexes(this IStore store, IIndexProvider indexProvider, string collection = null)
        {
            if (indexProvider != null)
            {
                return(store.RegisterIndexes(new[] { indexProvider }, collection));
            }

            return(store.RegisterIndexes(new IIndexProvider[0], collection));
        }
Exemplo n.º 17
0
        public ManagementService(IDatabase database, IIndexProvider indexProvider, IMediator mediator)
        {
            Prevent.ParameterNull(database, nameof(database));
            Prevent.ParameterNull(indexProvider, nameof(indexProvider));
            Prevent.ParameterNull(mediator, nameof(mediator));

            _database      = database;
            _indexProvider = indexProvider;
            _mediator      = mediator;
        }
        public UserIndexResourceProcessor(ISiteSettings settings,
                                          ISiteConnector downloader,

                                          IIndexProvider indexProvider,
                                          ISearchSettings searchSettings,
                                          ILog logger,
                                          IIndexNameCreator indexNameCreator,
                                          IElasticsearchCustomClient elasticClient) : base(settings, downloader, indexProvider, searchSettings, logger, indexNameCreator, elasticClient)
        {
        }
Exemplo n.º 19
0
 public IndexingService(
     IIndexingClient indexingClient,
     IIndexProvider <EntryItem> entryIndexProvider,
     IIndexProvider <LeagueItem> leagueIndexProvider,
     IVerifiedEntryIndexProvider verifiedEntryIndexProvider,
     ISingleEntryIndexProvider singleEntryIndexProvider,
     ILogger <IndexingClient> logger)
 {
     _indexingClient             = indexingClient;
     _entryIndexProvider         = entryIndexProvider;
     _leagueIndexProvider        = leagueIndexProvider;
     _verifiedEntryIndexProvider = verifiedEntryIndexProvider;
     _singleEntryIndexProvider   = singleEntryIndexProvider;
     _logger = logger;
 }
 public BaseIndexResourceProcessor(ISiteSettings settings,
                                   ISiteConnector dataSource,
                                   IIndexProvider indexProvider,
                                   ISearchSettings searchSettings,
                                   ILog logger,
                                   IIndexNameCreator indexNameCreator,
                                   IElasticsearchCustomClient elasticClient)
 {
     _settings         = settings;
     _dataSource       = dataSource;
     _indexProvider    = indexProvider;
     _searchSettings   = searchSettings;
     _logger           = logger;
     _indexNameCreator = indexNameCreator;
     _elasticClient    = elasticClient;
 }
 public ProjectItemsOwnershipController(
     IMasterDetailPermissionManager masterDetailPermissionManager,
     IBasicDataService basicDataService,
     IActivityStreamService activityStreamService,
     IWorkContextAccessor workContextAccessor,
     IIndexProvider indexProvider,
     IOrchardServices orchardServices,
     IWidgetService widgetService,
     ICRMContentOwnershipService contentOwnershipService,
     IContentOwnershipHelper contentOwnershipHelper,
     IRepository <UserRolesPartRecord> userRolesRepository,
     IRepository <ContentItemPermissionDetailRecord> permissionDetailRecordRepository) :
     base(masterDetailPermissionManager, basicDataService, activityStreamService, workContextAccessor, indexProvider, orchardServices, widgetService, contentOwnershipService, contentOwnershipHelper, userRolesRepository, permissionDetailRecordRepository)
 {
     this.DefaultDisplayType = "TitleAndMenu";
     this.ShowCustomers      = true;
 }
 public IndexerService(ISiteSettings settings,
                       ISiteConnector downloader,
                       IIndexProvider indexProvider,
                       ISearchSettings searchSettings,
                       ILog logger,
                       IIndexNameCreator indexNameCreator,
                       IIndexResourceProcessor indexResourceProcessor, ServiceConfiguration manifests)
 {
     _siteSettings           = settings;
     _dataSource             = downloader;
     _indexProvider          = indexProvider;
     _searchSettings         = searchSettings;
     _logger                 = logger;
     _indexNameCreator       = indexNameCreator;
     _indexResourceProcessor = indexResourceProcessor;
     _manifests              = manifests;
 }
Exemplo n.º 23
0
        internal CouchDatabase(IFlurlClient flurlClient, CouchOptions options, QueryContext queryContext)
        {
            _flurlClient  = flurlClient;
            _options      = options;
            _queryContext = queryContext;

            var queryOptimizer  = new QueryOptimizer();
            var queryTranslator = new QueryTranslator(options);
            var querySender     = new QuerySender(flurlClient, queryContext);
            var queryCompiler   = new QueryCompiler(queryOptimizer, queryTranslator, querySender);

            _queryProvider = new CouchQueryProvider(queryCompiler);

            Security       = new CouchSecurity(NewRequest);
            LocalDocuments = new LocalDocuments(flurlClient, queryContext);
            IndexProvider  = new IndexProvider <TSource>(this);
        }
Exemplo n.º 24
0
        public override void Init()
        {
            base.Init();
            _lockFileManager   = _container.Resolve <ILockFileManager>();
            _provider          = _container.Resolve <IIndexProvider>();
            _indexTaskExecutor = _container.Resolve <IIndexingTaskExecutor>();
            _contentManager    = _container.Resolve <IContentManager>();
            ((IndexingTaskExecutor)_indexTaskExecutor).Logger = _logger = new StubLogger();

            var thingType = new ContentTypeDefinitionBuilder()
                            .Named(ThingDriver.ContentTypeName)
                            .WithSetting("TypeIndexing.Indexes", "Search")
                            .Build();

            _contentDefinitionManager
            .Setup(x => x.GetTypeDefinition(ThingDriver.ContentTypeName))
            .Returns(thingType);
        }
Exemplo n.º 25
0
        public void Setup() {
            if (Directory.Exists(_basePath)) {
                Directory.Delete(_basePath, true);
            }
            Directory.CreateDirectory(_basePath);

            _appDataFolder = AppDataFolderTests.CreateAppDataFolder(_basePath);

            var builder = new ContainerBuilder();
            builder.RegisterType<LuceneIndexProvider>().As<IIndexProvider>();
            builder.RegisterInstance(_appDataFolder).As<IAppDataFolder>();

            // setting up a ShellSettings instance
            _shellSettings = new ShellSettings { Name = "My Site" };
            builder.RegisterInstance(_shellSettings).As<ShellSettings>();

            _container = builder.Build();
            _provider = _container.Resolve<IIndexProvider>();
        }
Exemplo n.º 26
0
 public ItemController(
     IIndexProvider indexProvider,
     ICRMContentOwnershipService crmContentOwnershipService,
     IContentOwnershipHelper contentOwnershipHelper,
     IOrchardServices services,
     IExtendedContentManager extendedContentManager,
     ITransactionManager transactionManager,
     IWidgetService widgetService,
     IThemeAwareViewEngine themeAwareViewEngine,
     IShapeFactory shapeFactory,
     IContentManager contentManager,
     IBasicDataService basicDataService,
     IDisplayHelperFactory displayHelperFactory,
     IActivityStreamService streamService,
     IContentItemDescriptorManager contentItemDescriptorManager)
     : base(string.Empty, string.Empty, indexProvider, services, crmContentOwnershipService, transactionManager, extendedContentManager, contentManager, widgetService, themeAwareViewEngine, shapeFactory, displayHelperFactory, basicDataService, contentOwnershipHelper, streamService, contentItemDescriptorManager)
 {
     this.T = NullLocalizer.Instance;
 }
Exemplo n.º 27
0
 public TicketController(
     Lazy <IEnumerable <IContentHandler> > handlers,
     IProjectService projectService,
     IIndexProvider indexProvider,
     ISearchTicketService searchTicketService,
     IContentOwnershipHelper contentOwnershipHelper,
     IRepository <UserRolesPartRecord> userRolesRepository,
     ICRMContentOwnershipService crmContentOwnershipService,
     IExtendedContentManager extendedContentManager,
     ITransactionManager transactionManager,
     IWidgetService widgetService,
     IThemeAwareViewEngine themeAwareViewEngine,
     IShapeFactory shapeFactory,
     IContentManager contentManager,
     IOrchardServices services,
     IDisplayHelperFactory displayHelperFactory,
     IBusinessUnitService businessUnitService,
     ISiteService siteService,
     IBasicDataService basicDataService,
     IContentDefinitionManager contentDefinitionManager,
     IRepository <BusinessUnitMemberPartRecord> businessUnitMembersRepository,
     IIndexManager indexManager,
     IWorkContextAccessor workContextAccessor,
     IActivityStreamService streamService,
     IContentItemDescriptorManager contentItemDescriptorManager)
     : base("Ticket", "Ticket_Edit", indexProvider, services, crmContentOwnershipService, transactionManager, extendedContentManager, contentManager, widgetService, themeAwareViewEngine, shapeFactory, displayHelperFactory, basicDataService, contentOwnershipHelper, streamService, contentItemDescriptorManager)
 {
     this.handlers                      = handlers;
     this.projectService                = projectService;
     this.workContextAccessor           = workContextAccessor;
     this.searchTicketService           = searchTicketService;
     this.userRolesRepository           = userRolesRepository;
     this.businessUnitService           = businessUnitService;
     this.siteService                   = siteService;
     this.contentDefinitionManager      = contentDefinitionManager;
     this.indexManager                  = indexManager;
     this.businessUnitMembersRepository = businessUnitMembersRepository;
     this.T                = NullLocalizer.Instance;
     this.Logger           = NullLogger.Instance;
     this.defaultQueryHint = this.defaultQueryHint.ExpandRecords <TicketPartRecord>();
     this.defaultQueryHint = this.defaultQueryHint.ExpandRecords <ContentItemPermissionPartRecord>();
     this.defaultQueryHint = this.defaultQueryHint.ExpandRecords <CRMCommentsPartRecord>();
 }
        public bool UpdateIndexBatch(string indexName)
        {
            ILockFile lockFile         = null;
            var       settingsFilename = GetSettingsFileName(indexName);
            var       lockFilename     = settingsFilename + ".lock";

            // acquire a lock file on the index
            if (!_lockFileManager.TryAcquireLock(lockFilename, ref lockFile))
            {
                Logger.Information("Index was requested but is already running");
                return(false);
            }

            using (lockFile) {
                if (!_indexManager.HasIndexProvider())
                {
                    return(false);
                }

                // load index settings to know what is the current state of indexing
                var indexSettings = LoadSettings(indexName);

                _indexProvider = _indexManager.GetSearchIndexProvider();

                if (indexSettings.Mode == IndexingMode.Rebuild && indexSettings.LastContentId == 0)
                {
                    _indexProvider.CreateIndex(indexName);

                    // mark the last available task at the moment the process is started.
                    // once the Rebuild is done, Update will start at this point of the table
                    indexSettings.LastIndexedId = _taskRepository
                                                  .Table
                                                  .OrderByDescending(x => x.Id)
                                                  .Select(x => x.Id)
                                                  .FirstOrDefault();
                }

                // execute indexing commands by batch of [ContentItemsPerLoop] content items
                return(BatchIndex(indexName, settingsFilename, indexSettings));
            }
        }
 public CRMCommentController(
     IContentItemDescriptorManager contentItemDescriptorManager,
     IActivityStreamService activityStreamService,
     ICRMContentOwnershipService contentOwnershipService,
     IContentManager contentManager,
     IOrchardServices services,
     IThemeAwareViewEngine themeAwareViewEngine,
     IShapeFactory shapeFactory,
     IDisplayHelperFactory displayHelperFactory,
     IIndexProvider indexProvider)
 {
     this.contentItemDescriptorManager = contentItemDescriptorManager;
     this.activityStreamService        = activityStreamService;
     this.indexProvider           = indexProvider;
     this.contentOwnershipService = contentOwnershipService;
     this.themeAwareViewEngine    = themeAwareViewEngine;
     this.contentManager          = contentManager;
     this.services             = services;
     this.displayHelperFactory = displayHelperFactory;
     this.Shape = shapeFactory;
     this.T     = NullLocalizer.Instance;
 }
Exemplo n.º 30
0
 public BaseController(
     string controllerContentType,
     string editMetadataType,
     IIndexProvider indexProvider,
     IOrchardServices services,
     ICRMContentOwnershipService crmContentOwnershipService,
     ITransactionManager transactionManager,
     IExtendedContentManager extendedContentManager,
     IContentManager contentManager,
     IWidgetService widgetService,
     IThemeAwareViewEngine themeAwareViewEngine,
     IShapeFactory shapeFactory,
     IDisplayHelperFactory displayHelperFactory,
     IBasicDataService basicDataService,
     IContentOwnershipHelper contentOwnershipHelper,
     IActivityStreamService streamService,
     IContentItemDescriptorManager contentItemDescriptorManager)
 {
     this.contentItemDescriptorManager = contentItemDescriptorManager;
     this.streamService          = streamService;
     this.indexProvider          = indexProvider;
     this.services               = services;
     this.basicDataService       = basicDataService;
     this.transactionManager     = transactionManager;
     this.ControllerContentType  = controllerContentType;
     this.EditMetadataType       = editMetadataType;
     this.extendedContentManager = extendedContentManager;
     this.contentManager         = contentManager;
     this.widgetService          = widgetService;
     this.themeAwareViewEngine   = themeAwareViewEngine;
     this.displayHelperFactory   = displayHelperFactory;
     this.Shape = shapeFactory;
     this.crmContentOwnershipService = crmContentOwnershipService;
     this.T = NullLocalizer.Instance;
     this.contentOwnershipHelper = contentOwnershipHelper;
 }
Exemplo n.º 31
0
 public MediaController(IIndexProvider indexProvider, IContentManager contentManager) {
     _indexProvider = indexProvider;
     _contentManager = contentManager;
 }
Exemplo n.º 32
0
        public IProxyPredicate GetProxyExecutionPredicate(IIndexProvider indexManager, IQueryStore queryStore, IEnumerable <long> rowsEnumerator)
        {
            ProxyAndPredicate proxyPredicate = new ProxyAndPredicate();

            proxyPredicate.AddTreePredicates(_predciates);

            if (!IsTerminal)
            {
                foreach (var predicate in _predciates)
                {
                    proxyPredicate.AddChildPredicate(
                        predicate.GetProxyExecutionPredicate(indexManager, queryStore, rowsEnumerator));
                }
                return(proxyPredicate);
            }

            OrderedList <int, IIndex> indexes = indexManager.OrderedIndexList;
            ArrayList sets = new ArrayList();

            ProxyAndPredicate singleSet = new ProxyAndPredicate();

            foreach (var value in proxyPredicate.TreePredicates)
            {
                ComparisonPredicate predicate = (ComparisonPredicate)value;
                if (predicate.PredicateType.Equals(PredicateType.Constant))
                {
                    //When any constant expression is false in an AND Expression it will be resulting into 0 rowIds.
                    if (!predicate.IsTrue(null))
                    {
                        return(new ProxyPredicate(new EmptyPredicate(), predicate));
                    }
                }
                else if (predicate.PredicateType.Equals(PredicateType.SingleVariable))
                {
                    singleSet.AddTreePredicate(predicate);
                }
                else if (predicate.PredicateType.Equals(PredicateType.MultiVariable))
                {
                    sets.Add(predicate);
                }
                else if (predicate.PredicateType.Equals(PredicateType.AllVariable))
                {
                    proxyPredicate.AddChildPredicate(
                        predicate.GetProxyExecutionPredicate(indexManager, queryStore, rowsEnumerator));
                }
            }

            if (singleSet.TreePredicates.Count > 0)
            {
                sets.Add(singleSet);
            }

            foreach (var set in sets)
            {
                if (set is ITreePredicate)
                {
                    proxyPredicate.AddChildPredicate(
                        GetMultiAttributePredicate((ComparisonPredicate)set, indexes.Values, queryStore));
                }
                else if (set is ProxyAndPredicate)
                {
                    var singleAttributeSet = (ProxyAndPredicate)set;
                    ReduceRecuringRanges(ref singleAttributeSet);

                    List <ProxyAndPredicate> proxyAnds = AssignCompoundIndices(singleAttributeSet, indexes.Values, queryStore);

                    if (proxyAnds.Count == 0)
                    {
                        proxyAnds.Add(singleAttributeSet);
                    }

                    foreach (var proxyAnd in proxyAnds)
                    {
                        if (proxyAnd.TreePredicates.Count == 0)
                        {
                            continue;
                        }
                        AssignSingleAttributesPredicate(proxyAnd, indexes.Values, queryStore);
                    }

                    if (proxyAnds.Count.Equals(1))
                    {
                        foreach (var predicate in proxyAnds[0].Predicates)
                        {
                            proxyPredicate.AddChildPredicate(predicate);
                            proxyPredicate.TreePredicates = _predciates;
                        }
                    }
                    else
                    {
                        //Getting the ProxyANDPredicate with the lowest cost...
                        OrderedList <double, ProxyAndPredicate> orderedPredicates = new OrderedList <double, ProxyAndPredicate>();

                        foreach (var proxyAnd in proxyAnds)
                        {
                            orderedPredicates.Add(proxyAnd.Statistics[Statistic.ExpectedIO], proxyAnd);
                        }

                        foreach (var predicate in orderedPredicates.FirstValues[0].Predicates)
                        {
                            proxyPredicate.AddChildPredicate(predicate);
                            proxyPredicate.TreePredicates = _predciates;
                        }
                        proxyPredicate.TreePredicates = _predciates;
                    }
                }
            }
            return(proxyPredicate);
        }
Exemplo n.º 33
0
        public bool UpdateIndexBatch(string indexName) {
            ILockFile lockFile = null;
            var settingsFilename = GetSettingsFileName(indexName);
            var lockFilename = settingsFilename + ".lock";

            // acquire a lock file on the index
            if (!_lockFileManager.TryAcquireLock(lockFilename, ref lockFile)) {
                Logger.Information("Index was requested but is already running");
                return false;
            }

            using (lockFile) {
                if (!_indexManager.HasIndexProvider()) {
                    return false;
                }

                // load index settings to know what is the current state of indexing
                var indexSettings = LoadSettings(indexName);

                _indexProvider = _indexManager.GetSearchIndexProvider();

                if (indexSettings.Mode == IndexingMode.Rebuild && indexSettings.LastContentId == 0) {
                    _indexProvider.CreateIndex(indexName);

                    // mark the last available task at the moment the process is started.
                    // once the Rebuild is done, Update will start at this point of the table
                    indexSettings.LastIndexedId = _taskRepository
                        .Table
                        .OrderByDescending(x => x.Id)
                        .Select(x => x.Id)
                        .FirstOrDefault();
                }

                // execute indexing commands by batch of [ContentItemsPerLoop] content items
                return BatchIndex(indexName, settingsFilename, indexSettings);
            }
        }
Exemplo n.º 34
0
 /// <summary>
 /// Registers index providers that are used only during the lifetime of this session.
 /// </summary>
 /// <param name="session">The session.</param>
 /// <param name="indexProvider">The index provider to register.</param>
 /// <param name="collection">The name of the collection.</param>
 /// <returns>The <see cref="ISession"/> instance.</returns>
 public static ISession RegisterIndexes(this ISession session, IIndexProvider indexProvider, string collection = null)
 {
     return(session.RegisterIndexes(new[] { indexProvider }, collection));
 }