protected virtual async Task <IList <IndexDocument> > GetDocumentsAsync(IList <string> documentIds, IIndexDocumentBuilder primaryDocumentBuilder, IEnumerable <IIndexDocumentBuilder> secondaryDocumentBuilders, ICancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var primaryDocuments = (await primaryDocumentBuilder.GetDocumentsAsync(documentIds)) ?.Where(d => d != null) .ToList(); if (primaryDocuments?.Any() == true) { if (secondaryDocumentBuilders != null) { var primaryDocumentIds = primaryDocuments.Select(d => d.Id).ToArray(); var secondaryDocuments = await GetSecondaryDocumentsAsync(secondaryDocumentBuilders, primaryDocumentIds, cancellationToken); MergeDocuments(primaryDocuments, secondaryDocuments); } // Add system fields foreach (var document in primaryDocuments) { document.Add(new IndexDocumentField(KnownDocumentFields.IndexationDate, DateTime.UtcNow) { IsRetrievable = true, IsFilterable = true }); } } return(primaryDocuments); }
protected virtual async Task <IndexingResult> IndexDocumentsAsync(string documentType, IList <string> documentIds, IIndexDocumentBuilder primaryDocumentBuilder, IEnumerable <IIndexDocumentBuilder> secondaryDocumentBuilders, ICancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var documents = await GetDocumentsAsync(documentIds, primaryDocumentBuilder, secondaryDocumentBuilders, cancellationToken); var response = await _searchProvider.IndexAsync(documentType, documents); return(response); }