gpt4 book ai didi

php - 比较用户之间的相似度 PHP

转载 作者:行者123 更新时间:2023-11-29 13:19:22 25 4
gpt4 key购买 nike

我正在制作一个带有用户系统的网站并希望通过用户的个人资料(大约有 20 个字段)来匹配用户

我希望用户在超过 50%(即 20 个字段中的 10 个字段相同)时可以与其他用户进行匹配

我已经得到了这个:

    $query = "SELECT * FROM users WHERE username='test'";
$result = mysqli_query($db_conx, $query);
$array = mysqli_fetch_row($result);

$query2 = "SELECT * FROM users WHERE username='test2'";
$result2 = mysqli_query($db_conx, $query2);
$array2 = mysqli_fetch_row($result2);

$similar = array_intersect($array, $array2);
$p2_perc = count($similar) / count($array2);

echo round($p2_perc * 100) . "% equal";

我希望用户能够自动显示该特定用户,但我可以解决这个问题

有人吗?

提前致谢非常感谢!

真正的问题是这样的

$query2 = "SELECT * FROM users LIMIT 1";
if ($query2 similarity > 50%)
echo "$user2";

最佳答案

您可以将其合并到一个查询中,如下所示:

SELECT
user1.username,
user2.username,
(
(user1.row1=user2.row1) +
(user1.row2=user2.row2) +
...
)/20 AS score
FROM
users AS user1,
users AS user2
WHERE
user1.username <> user2.username
HAVING
score > 0.5

仅当分数大于 0.5 时,才会返回两个用户名及其分数,

说明:比较两列(每一个 user1.rowX=user2.rowX)。如果它们相同,则为 1,否则为 0。 0 和 1 的总和除以问题数 (20),这就是分数(这是平均值的简单计算)。

但是如果您检查大量用户,这可能会变得非常慢。如果您只想显示给定用户(例如当前登录的用户)的匹配项,请使用:

SELECT
user1.username,
user2.username,
(
(user1.row1=user2.row1) +
(user1.row2=user2.row2) +
...
)/20 AS score
FROM
users AS user1,
users AS user2
WHERE
user1.username <> user2.username AND
user1.username = 'CURRENTLY_LOGGED_IN_USER'
HAVING
score > 0.5

关于php - 比较用户之间的相似度 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21053441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com