I believe that what you need is: Global: Combine fields filter. This is a filter provided by Views out of the box. In this filter's settings you can (1) add your 'author field', or even more fields (2) set the
Operator, provided by that filter, to:
Contains all words so to return results like you said:
If a user enter John in the author field then search; all the nodes should be listed with the authors name that include "John": John A., Michael John, Another John etc.
and (3) it is working as a simple text field, not as an auto-complete field.
I Hope that helps!
I admit that my answer is incomplete but it is working, however there is a peculiarity: if you look closely the View's query that is being constructed , and especially the
where clause, for that particular field type (entity reference or term reference) you will see that includes the
field_name_target_id/field_name_tid field instead of the
field_name_value field and while you are searching for text it's reasonable that you get no results, but if you search with the
nid/tid you will get the desired results. So all you have to do is to include in the
where clause the field you want to search at and hook_views_query_alter is the most appropriate hook. Of course the use of relationships is acceptable, but I just wanted to make it clear that it is working and that it is not a bug, in my humble opinion.