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()); } } }
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); } } }
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}"); }