You can create a microflow to write your own custom java code after after applying filter concept. I have attached a link for blog on filter to meet your requirement.
First apply this filter and then use your custom java code for the same to achieve the implementation you want
Let me know if you have anything around to know.
This one is real hard because there are a lot of parameters. For example lets use an easy set of numbers:
3 4 5 6 7 8. Should then 3 4 5 6 7 10 being better then 2 4 5 6 7 7? So is having a higher number of correct parameters better then having a higher difference?
If those rules are clear you could use XPath retrieves for each parameter and intersect the lists each time. If no complete match the calculate the 5 % range (up and down) and use those values. Depending on the rule set you need to first check if there is an exact match before you do the range match. But depending on how much objects there are in the database this can be a very time consuming process.