我应该使用什么样的算法来查找数据库中的相似之处?

时间:2016-06-11 08:34:24

标签: php mysql database algorithm

我们说我的应用有1000个用户。我问他们100个问题,答案是肯定/否,我将这些答案记录在一个单独的表格中。

现在,我希望看到那些对至少20个问题给出相同答案的人。

为了做到这一点,我应该遵循什么样的算法?谷歌搜索有哪些相关的关键词?

P.S。我在WAMP环境中工作。

1 个答案:

答案 0 :(得分:4)

将您的答案表加入到自己,选择共享相同question_idanswer但具有不同user_id的答案。按行user_id对行进行分组,并使用HAVING子句排除少于20个匹配答案的行。

您正在寻找与user_id“1”的用户类似的用户的示例:

SELECT DISTINCT a2.user_id FROM answers a
INNER JOIN answers a2
        ON a.question_id = a2.question_id
       AND a.answer = a2.answer
       AND a.user_id != a2.user_id
WHERE a.user_id = 1
GROUP BY a.user_id, a2.user_id
HAVING COUNT(*) >= 20;

从技术上讲,在这种情况下你不需要按a.user_id进行分组,但是如果你想修改WHERE子句以返回多个{{1}的结果,我就把它留在那里}}