in reply to Guessing/Ordering Partial Data

I would treat it as a typical search problem: first build a reverse index, and then just do a look up, you can order by how many are matched. One nice thing about this approach is that you can build the reverse index offline, so scalable as your @data gets bigger. (Sorry, too tired/late to give code, but it should be easy.)