Я немного поискал, но не нашел ничего похожего на то, чего я пытаюсь достичь.
По сути, я пытаюсь найти сходство между голосованием двух пользователей.
У меня есть таблица, в которой хранится каждый сделанный голос, в котором хранится:
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, не зацикливаясь на каждом голосе крайне неэффективным способом. ) Если бы они были в разных таблицах, ВНУТРЕННЕГО СОЕДИНЕНИЯ было бы достаточно, я бы подумал ... но это, очевидно, не будет работать на той же таблице (или так?).
Любые идеи будут с благодарностью.