When objects returned in search results etc are deserialized, they are instantiated by the JSON.NET serializer. If some custom action is required when instantiating the objects, the instantiation can be customized using the Client conventions.
An example of configuring custom instantiation can look like this:
//using EPiServer.Find.ClientConvetions; client.Conventions.ForType<BlogPost>() .CreateUsing(() => new BlogPost("someCtorParamValue"));
Note that if indexed objects are so complex that they require custom instantiation, they are often not suitable as search results and it might be better to project the search results to some other simpler class using the Select method.