コード例 #1
0
        public ContentTypesFilterForms(IShapeFactory shapeFactory, IIndexProvider indexProvider)
        {
            _shapeFactory = shapeFactory;
            _indexProvider = indexProvider;

            T = NullLocalizer.Instance;
        }
コード例 #2
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 <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>();
        }
コード例 #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));
            }
        }
コード例 #4
0
 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;
 }
コード例 #5
0
ファイル: IndexingService.cs プロジェクト: ehamberg/fplbot
        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++;
            }
        }
コード例 #6
0
 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;
 }
コード例 #7
0
        public ContentTypesFilterForms(IShapeFactory shapeFactory, IIndexProvider indexProvider)
        {
            _shapeFactory  = shapeFactory;
            _indexProvider = indexProvider;

            T = NullLocalizer.Instance;
        }
コード例 #8
0
ファイル: UserController.cs プロジェクト: YSRE/SuperRocket
        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;
        }
コード例 #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;
            }
        }
コード例 #10
0
ファイル: LibraryFile.cs プロジェクト: AndrewStx/PPTLibrary
        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;
        }
コード例 #12
0
ファイル: TesterDbContext.cs プロジェクト: hehek/TesterServer
 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));
 }
コード例 #13
0
        public RemoveDocumentDirectoryCommandHandler(IDatabase database, IIndexProvider indexProvider)
        {
            Prevent.ParameterNull(database, nameof(database));
            Prevent.ParameterNull(indexProvider, nameof(indexProvider));

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

            return(store.RegisterIndexes(new IIndexProvider[0]));
        }
コード例 #16
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));
        }
コード例 #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)
        {
        }
コード例 #19
0
ファイル: IndexingService.cs プロジェクト: ehamberg/fplbot
 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;
 }
コード例 #21
0
 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;
 }
コード例 #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);
        }
コード例 #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);
        }
コード例 #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>();
        }
コード例 #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;
 }
コード例 #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>();
 }
コード例 #28
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));
            }
        }
コード例 #29
0
 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;
 }
コード例 #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;
 }
コード例 #31
0
 public MediaController(IIndexProvider indexProvider, IContentManager contentManager) {
     _indexProvider = indexProvider;
     _contentManager = contentManager;
 }
コード例 #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);
        }
コード例 #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);
            }
        }
コード例 #34
0
ファイル: ISession.cs プロジェクト: Skrypt/yessql
 /// <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));
 }