У меня был небольшой поиск, но я не нашел ничего похожего на то, чего я пытаюсь достичь.
По сути, я пытаюсь найти сходство между привычками голосования двух пользователей.
У меня есть таблица, в которой хранится каждое отдельное голосование, в котором хранятся:
voteID
itemID (the item the vote is attached to)
userID (the user who voted)
direction (whether the user voted the post up, or down)
Я стремлюсь вычислить сходство, скажем, между пользователями A и B, выяснив две вещи:
- Общее количество голосов. То есть, сколько раз они оба проголосовали за один и тот же пост (направление на данный момент не имеет значения).
- Количество голосов, которые они проголосовали за одно и то же направление, при общем голосовании.
(Затем просто вычислить № 2 в процентах от № 1, чтобы получить приблизительную оценку сходства).
Мой вопрос заключается в следующем: как мне найти пересечение между наборами голосов двух пользователей? (т.е. как правильно рассчитать точку №1, не перебирая каждый голос крайне неэффективным способом). они были в разных таблицах, INNER JOIN было бы достаточно, я думаю... но это, очевидно, не будет работать на одной и той же таблице (или будет?).
Любые идеи очень приветствуются.