gpt4 book ai didi

mysql选择像facebook提要中的记录

转载 作者:行者123 更新时间:2023-11-29 06:40:01 24 4
gpt4 key购买 nike

我认为这是一个非常具有挑战性的问题..

我有一个“USERS”表:

ID | name

我有一个存储用户位置的 LOCATIONS 表:

USERID | location

我有一个 USERS_INTERESTS 表:

USERID | interests (comma-separated IDs of the INTERESTS table )

兴趣:

interest_ID | interest_name

帖子_

post_ID | userPosting | description | post_datetime

我现在需要创建类似于 Facebook 的动态消息,我会在其中选择与我最相似的用户的帖子,同时考虑用户的位置和兴趣。

我应该选择与我“相似”的用户插入的最后 10 个帖子(在我的位置和/或与我的兴趣最相似的)。

此外,这应该以某种“优先级”来完成:

  • 我根据自己的兴趣选择我所在位置的用户帖子

  • 如果记录太少,我会包括在同一位置且有一些共同兴趣的用户的帖子

  • 如果不够,我会在我的位置添加用户的帖子。

这还不够,这应该按时间进行:我每 20 分钟选择 10 个最相关的帖子。

我知道这很复杂,希望有人能指出我正确的方向。谢谢

最佳答案

这个问题有几个部分,大多数需要重新思考。

首先是“相似”部分。在 MySQL 中几乎只有一种方法可以做到这一点,那就是如果一个位置是另一个位置的一部分,比如“York”是“New York”的一部分,那么你会发现“New York”与“York”相似。现在,如果您有一些关于位置的其他数据,例如地理坐标或像地区或州这样的一般区域,那么您可以将相似性定义为“同一州的城镇”。

兴趣相似度可能更简单 - 您可以计算出两个人之间有多少兴趣相匹配。为了使这更容易,您应该将兴趣表组织成长格式,这意味着表结构如下:

USERID_1 | INTEREST_1
USERID_1 | INTEREST_2
etc

至于构建实际查询 - 您应该逐步进行。

1) 假设我们尝试为用户 ID 为 userID 的当前用户生成结果。由于连接是通过位置和兴趣进行的,因此我们应该首先查询当前用户的位置和兴趣。

2) 获取当前用户的位置,并根据您决定定义“相似”的方式查询具有相似位置的用户。如果你设法定义了一个相似性度量,那么也可以查询它。我的意思是“处于同一状态比处于同一大陆更相似”。以这种方式保存您找到的用户。

3) 对当前用户的兴趣做同样的事情并保存找到的用户。

4) 合并两个列表,可能根据相似性指标并保存生成的用户列表。

5) 根据这个列表查询帖子,从中选出 10 个。将它们与当前用户 ID 和时间戳一起保存到新表中。下次您开始此过程时,首先检查新表以查看自为当前用户生成此列表以来是否已过去 20 分钟 - 如果已过去则生成一个新列表,如果没有则使用表中的列表。

其实并没有听起来那么复杂:)

关于mysql选择像facebook提要中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22148702/

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