How do I give split listings names generated from their attributes?

This code example extends the 
Aero\Search\Elastic\Documents\ListingDocumentdocument to generate names for split listings from the attributes that the variant is made up of. You can learn more about extending the listing document here
It’s important to note that you need to reindex for changes to the listing document to take effect. You can reindex using the php artisan 
aero:search:reindexcommand. You can learn more about reindexing here
<?php
namespace Acme\MyModule;
use Aero\Common\Providers\ModuleServiceProvider;
use Aero\Search\Elastic\Documents\ListingDocument;
class ServiceProvider extends ModuleServiceProvider
{
   public function setup()
   {
       ListingDocument::add('search-result', function ($document) {
           if (! $name = $document->getData()['search-result']['name'] ?? null) return [];
           if (! $variant = $document->getModel()->variants->first()) return [];
           if (! $attributeGroups = $document->getModel()->product->attribute_groups_to_split_by ?? []) return [];
           $attributes = $variant->attributes->whereIn('attribute_group_id', $attributeGroups);
           if ($attributes->isEmpty()) return [];
           $attributeNames = $attributes->map->getTranslation('name', $document->getLanguage())->join(' ');
           return ['name' => "$attributeNames $name"];
       });
   }
}