/**
  * Indexes an array of documents.
  *
  * Documents are given as an array of the array of documents. The array of documents
  * holds documents for all translations of the particular entity.
  *
  * Notes:
  * - Does not force a commit on solr, depends on solr config, use {@commit} if you need that.
  * - On large amounts of data make sure to iterate with several calls to this function with a limited
  *   set of documents, amount you have memory for depends on server, size of documents, & PHP version.
  *
  * @param \eZ\Publish\SPI\Search\Document[][] $documents
  */
 public function bulkIndexDocuments(array $documents)
 {
     $documentMap = array();
     $mainTranslationsEndpoint = $this->endpointResolver->getMainLanguagesEndpoint();
     $mainTranslationsDocuments = array();
     foreach ($documents as $translationDocuments) {
         foreach ($translationDocuments as $document) {
             $documentMap[$document->languageCode][] = $document;
             if ($mainTranslationsEndpoint !== null && $document->isMainTranslation) {
                 $mainTranslationsDocuments[] = $this->getMainTranslationDocument($document);
             }
         }
     }
     foreach ($documentMap as $languageCode => $translationDocuments) {
         $this->doBulkIndexDocuments($this->endpointRegistry->getEndpoint($this->endpointResolver->getIndexingTarget($languageCode)), $translationDocuments);
     }
     if (!empty($mainTranslationsDocuments)) {
         $this->doBulkIndexDocuments($this->endpointRegistry->getEndpoint($mainTranslationsEndpoint), $mainTranslationsDocuments);
     }
 }
 public function __construct(EndpointResolver $endpointResolver)
 {
     $this->hasMainLanguagesEndpoint = $endpointResolver->getMainLanguagesEndpoint() !== null;
 }