How to match a user with other users with similar interests based on their attributes?
One possible approach would be to create N classifiers (one per each user) and then pick M random items, and run those into the N classifiers.
The outcome would be something like:

        User 1 | User 2 | ... | User N
Item 1:    1   |    0   | ... |   1    --&gt; User 1 and N both like item 1
Item 2:    1   |    1   | ... |   1    --&gt; All users like item 2
...      ...   |   ...  | ... |  ...
Item M:    0   |    0   | ... |   0    --&gt; No user likes item M


where the i-th row contains the result of running i-th item in all N classifiers, and the j-th column contains the results of running all the M items in the j-th classifier.

Then you could see each user as a M-dimentional point, and use a simple classifier such as KNN with haming distance for the distance metric.

With a larger M, you'd get more accurate results, since you're using more variables to compare each user.
The only caveat here is that you'd need those N classifiers to be very accurate, in order to minimize error propagation.