SPIRES used to do complex runtime query expansion for first names in author queries. (Hence INSPIRE doing the same.)
For reference, here is runtime query expansion for "find a Ellis, Jonathan Richard":
Search stage 1: search_pattern_parenthesised() searched
'(author:"Ellis, Jonathan* Richard*" or exactauthor:"Ellis, J
Richard" or exactauthor:"Ellis, Jo Richard" or
exactauthor:"Ellis, Jon Richard" or exactauthor:"Ellis, Jona
Richard" or exactauthor:"Ellis, Jonat Richard" or
exactauthor:"Ellis, Jonath Richard" or exactauthor:"Ellis,
Jonatha Richard")'.
Search stage 1: search_pattern_parenthesised() returned ['+',
'author:"ellis, jonathan* richard*" | exactauthor:"ellis, j
richard" | exactauthor:"ellis, jo richard" | exactauthor:"ellis,
jon richard" | exactauthor:"ellis, jona richard" |
exactauthor:"ellis, jonat richard" | exactauthor:"ellis, jonath
richard" | exactauthor:"ellis, jonatha richard"'].
Search stage 1: basic search units are: [['+', 'ellis, jonathan*
richard*', 'author', 'a'], ['|', 'ellis, j richard',
'exactauthor', 'a'], ['|', 'ellis, jo richard', 'exactauthor',
'a'], ['|', 'ellis, jon richard', 'exactauthor', 'a'], ['|',
'ellis, jona richard', 'exactauthor', 'a'], ['|', 'ellis, jonat
richard', 'exactauthor', 'a'], ['|', 'ellis, jonath richard',
'exactauthor', 'a'], ['|', 'ellis, jonatha richard',
'exactauthor', 'a']]