The current matchmaker implementation is just a stub. After filtering based on platform and available versions, it just picks the first suitable solutions to return to the user in a particular situation.
We should implement a "proof of concept" matchmaker plugin, currently codenamed the "canopy" matchmaker, which uses a properly fine-grained algorithm which trades off specificity of meeting a users' needs against coverage of those needs by the smallest number of solutions.
This will use a form of "lexicographic ordering" on vectors of suitability measures, similar to that used for settling predecence amongst competing CSS rules. This has been proven over time to be an effective and reasonably intelligible scheme for resolving conflicts between communities in "producer and consumer" relationships without the need to introduce logical/procedural constructs. In the CSS world these are end users and various levels of designers - for solutions/matchmakers similarly these communities consist of end users and various levels of integrators/solution providers.
This kind of rule is illustrated entertainingly and perspicuously at http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html - "Sith Lord specificity rules"