It looks like your case is close enough to the usual search engine similarity queries, that you can use the same vector space model.
For each person, count the number of occurrences of each keyword. Consider each keyword as a dimension and the number of occurrences as the magnitude of the vector in this dimension. Usually each dimension is handled the same way, but if you find that some keywords are the best predictors of compatibility, you can to some extent scale each occurrence in that dimension.
Then the dot product of the vectors of different people gives you an estimate of how similar they are. Or you can enter your own keywords and find people whose interests are closest.
source share