Ejemplo n.º 1
0
        public void Write <T>(ulong collectionId, IEnumerable <Document> job, IModel <T> model, int reportSize = 1000)
        {
            using (var writeSession = new WriteSession(new DocumentWriter(collectionId, this)))
                using (var indexSession = new IndexSession <T>(model, model))
                {
                    Write(collectionId, job, model, writeSession, indexSession, reportSize);

                    using (var stream = new WritableIndexStream(collectionId, this, logger: Logger))
                    {
                        stream.Write(indexSession.GetInMemoryIndex());
                    }
                }
        }
Ejemplo n.º 2
0
        public void Write <T>(
            Document document,
            WriteSession writeSession,
            IndexSession <T> indexSession)
        {
            writeSession.Put(document);

            foreach (var field in document.Fields)
            {
                if (field.Value != null && field.Index)
                {
                    indexSession.Put(document.Id, field.KeyId, (T)field.Value);
                }
            }
        }
Ejemplo n.º 3
0
        public void Write <T>(ulong collectionId, IEnumerable <Document> job, IModel <T> model, WriteSession writeSession, IndexSession <T> indexSession, int reportSize = 1000)
        {
            LogInformation($"writing to collection {collectionId}");

            var time     = Stopwatch.StartNew();
            var debugger = new IndexDebugger(Logger, reportSize);

            foreach (var document in job)
            {
                writeSession.Put(document);

                //Parallel.ForEach(document, kv =>
                foreach (var field in document.Fields)
                {
                    if (field.Value != null && field.Index)
                    {
                        indexSession.Put(document.Id, field.KeyId, (T)field.Value);
                    }
                }//);

                debugger.Step(indexSession);
            }

            Logger.LogInformation($"processed write&index job (collection {collectionId}) in {time.Elapsed}");
        }