我有一点搜索,但没有发现任何类似于我想要实现的东西.
基本上,我试图找出两个用户的投票习惯之间的相似性.
我有一个表格存储每个人的投票,其中存储:
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,而不是以非常低效的方式循环每一次投票.)如果他们在不同的表中,内部联接就足够了,我想……但这显然不起作用在同一张桌子上(或者它会吗?).
任何想法将不胜感激.
解决方法:
像这样的东西:
SELECT COUNT(*)
FROM votes v1
INNER JOIN votes v2 ON (v1.item_id = v2.item_id)
WHERE v1.userID = 'userA'
AND v2.userUD = 'userB'