예제 #1
0
        public async Task Reindexer()
        {
            var parameters = new Reindexer.Parameters {
                BatchSize                    = 10,
                WaitBetweenBatches           = TimeSpan.FromMilliseconds(0),
                WaitBetweenChecksForNewItems = TimeSpan.FromMilliseconds(0)
            };

            var itemsSemaphore = new SemaphoreSlim(1);
            var items          = new List <ISearchIndexItemWithTime>();
            var index          = new ListIndex();

            var reindexer = new Reindexer(
                index,
                async(since, skip, maxCount) =>
            {
                try
                {
                    await itemsSemaphore.WaitAsync();
                    return(items
                           .OrderBy(item => item.LastUpdated)
                           .Where(item => item.LastUpdated > since)
                           .Skip(skip)
                           .Take(maxCount.Value)
                           .ToArray());
                }
                finally
                {
                    itemsSemaphore.Release();
                }
            },
                parameters);

            var tscs = Enumerable.Range(0, 4).Select(_ => new TaskCompletionSource <bool>()).ToArray();
            var c    = 0;

            reindexer.OnSuccessfulUpdate += (s, a) =>
            {
                tscs[c].SetResult(true);
                c++;
            };

            await itemsSemaphore.WaitAsync();

            await reindexer.Start(new DateTime(), 0);

            items.AddRange(MakeItems(DateTime.Now - TimeSpan.FromDays(1), 40));
            itemsSemaphore.Release();
            await tscs[0].Task;

            var indexItems = index.Items.OrderBy(i => i.Ref, StringComparer.Ordinal).ToArray();

            Assert.Equal(items.OrderBy(i => i.LastUpdated).Take(indexItems.Length).OrderBy(i => i.Ref, StringComparer.Ordinal), indexItems);

            await itemsSemaphore.WaitAsync();
        }
    public FigureRecipeMerger(FigureRecipe parent, params FigureRecipe[] children)
    {
        this.parent    = parent;
        this.children  = children;
        this.reindexer = Reindexer.Make(parent, children);

        childControlChannels = children
                               .Select(child => new ChannelRecipe {
            Name         = $"CTRL{child.Name}?value",
            InitialValue = 0,
            Min          = 0,
            Max          = 1,
            Clamped      = true,
        }).ToArray();
    }
예제 #3
0
        static void Main(string[] args)
        {
            Repo repo = new Repo();

            repo.SaveToElasticsearchPerson();

            repo.SaveToElasticsearchStateProvince();
            //var addressX = repo.GetAddressFromElasticsearch("22");
            //Console.WriteLine(addressX);

            DateTime beginDateTime = DateTime.UtcNow;

            Reindexer.ReindexStateProvince(beginDateTime);
            Reindexer.ReindexStateProvinceAddress(beginDateTime);

            Console.WriteLine("Created new index from version 1 index");
            Console.ReadLine();
        }
예제 #4
0
        static void Main(string[] args)
        {
            Repo repo = new Repo();

            //repo.SaveToElasticsearchPerson();

            repo.SaveToElasticsearchStateProvince();
            var addressX = repo.GetAddressFromElasticsearch("37", "14");

            Console.WriteLine(addressX);

            DateTime beginDateTime = DateTime.UtcNow;

            Reindexer.ReindexStateProvince(beginDateTime);
            Reindexer.ReindexStateProvinceAddress(beginDateTime);

            // -28 documents because the countryCode was not reindexed.

            Console.WriteLine("Created new index from version 1 index");
            Console.ReadLine();
        }