If your boost weightings are generally static (ie: don't change for every request) then the most straight forward way to do something like this is with external file field...
lucene.apache.org/solr/api/org/apache/solr/schema/ExternalFileField.html
It's common use case is to contain a mapping of "id=value" pairs for each doc, but there is no requirement that the lookup field be the id / uniqueKey. You could (in your specific case) have a simple file listing the 5 mappings for each of The known values in your "source" field, as well as a default mapping, and then that numerical value can be used in a function.
If you really need to specify a switch using arbitrary values at query time, then there are some new functions available in trunk that should make this possible using nested "if" functions (but I haven't personally tested this)...
wiki.apache.org/solr/FunctionQuery#if
wiki.apache.org/solr/FunctionQuery#termfreq
if(termfreq(source,'HIGHQLTY'),3,if(termfreq(source,'SVC1'),2,1))