I am exploring some ideas around dating site matching, and I can do with some ideas as to which is the better solution
Senario: We have a boy and girl, the boy has completed his profile/bio thoroughly while the girl hasn't or maybe she just doesn't like a lot of things, so this is what the data looks like
Boy likes: Girl likes:
--------- -----------
Painting Painting
Movies Movies
Long walks Long walks
Harry Potter Harry Potter
Dogs Dogs
Pizza Pizza
Computer Science Computer Science
Mercedes Ford
Traveling Daisies
Diving Psycology
...
Total things
---------------------------------------
100 10
They share 7 things in common. To the girl the boy is a 70% match which is great But to the boy the girl is only a 7% match
Maybe the girl would have more in common if she had more in her list of likes so maybe giving their match a 7/100 is a match missed and maybe that's all she likes and 7/100 is the best they'll ever match but even then, it still might be a good match because maybe the boy over filled his list of things he likes while the girl chose carefully what she really likes.
I am looking for ideas for an algorithm that would give the best match score to order them in lists with other people/matches who might have small percentage in matches because their lists of things they like are 1000s of entries long for example
Edit: I will not be matching strings, each of strings in the table above will have a unique ID in an RDBMS database. A table will be used to link users and topics