you can check for Request handler with edismax and with default configuration qf
which would search on the copyfield which holds data from all the fields.
qf query field on which the query would be executed.
You would just need to pass a single param to solr qt=edismax&q=K1 K2
for search.
<requestHandler name="edismax" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">edismax</str>
<str name="qf">
all_fields
</str>
<str name="fl">
*,score
</str>
<str name="q.alt">*:*</str>
</lst>
</requestHandler>
If the user wants to search on name or purpose, i would suggest just passing the fields and the query to this request handler.
The parameters passed would override the default parameters.
You would just need to pass a single param to solr qt=edismax&q=K1 K2&qf=name applicant
for search.
You can control the OR behaviour using the mm (minimum match) parameter.