/// <summary> /// Get documents for Rerun job /// </summary> /// <param name="documents"></param> /// <returns></returns> private List <ProjectDocumentDetail> GetDocumentsForRerunJob(List <DocumentIdentifier> documents) { var documentStatusList = _analyticProject.GetProjectDocumentsStausFromProcessSet(_jobParameter.MatterId, _dataset.CollectionId, _jobParameter.PrimarySystemJobId, WorkAssignment.JobId, documents.Select(d => d.ReferenceId).ToList()); var projectDocumentDetailList = new List <ProjectDocumentDetail>(); foreach (var document in documents) { var resultdocumentStatus = documentStatusList.FirstOrDefault(d => d.DocumentReferenceId == document.ReferenceId); if (resultdocumentStatus != null && resultdocumentStatus.SubSystemStatus) { continue; //Document processed earlier and already succeed, then no need to process again } var projectDocumentDetail = new ProjectDocumentDetail { DocumentReferenceId = document.ReferenceId, TextFilePath = document.Url }; projectDocumentDetailList.Add(projectDocumentDetail); } return(projectDocumentDetailList); }
/// <summary> /// Send documents to next worker for Update Fields /// </summary> /// <param name="categorizedResultDocuments"></param> private void SendDocumentsForUpdate(IEnumerable <CategorizedDoc> categorizedResultDocuments) { var resultDocuments = new List <ProjectDocumentDetail>(); foreach (var categorizedResultDocument in categorizedResultDocuments) { var resultDocument = new ProjectDocumentDetail { DocId = categorizedResultDocument.DocId }; var predictedCategory = string.Empty; double predictedScore = 0; if (categorizedResultDocument.CategoryResults != null && categorizedResultDocument.CategoryResults.Any()) { if (!string.IsNullOrEmpty(categorizedResultDocument.CategoryResults[0].CategoryName)) { predictedCategory = categorizedResultDocument.CategoryResults[0].CategoryName.Equals("R") ? RelevantCategory : NotRelevantCategory; } predictedScore = categorizedResultDocument.CategoryResults[0].Score; } resultDocument.PredictedCategory = predictedCategory; resultDocument.DocumentScore = predictedScore; resultDocuments.Add(resultDocument); if (resultDocuments.Count < _batchSize) { continue; } //Send documents to pipeline Send(resultDocuments); resultDocuments.Clear(); } if (resultDocuments.Any()) { //Send documents to pipeline Send(resultDocuments); } }