我可能已经向左或向右滑动了 10k 个个人资料。 如果我明天打开应用程序,我将获得 10 份我从未见过的个人资料。 如何高效查询这些资料?
可以肯定,“给我所有排除 x、y、z、……”类型的 SQL 查询(其中 x、y、z 是我已经见过的大量配置文件)是不可行的
我在网上收集的一些想法
我确实理解这个问题的解决方案可能不是最佳的,要么需要一些繁重的查询,要么需要存储一些重要的元数据,但我想到的解决方案仍然看起来效率太低
这是一个非常有趣的问题。我一直在网上寻找一些清晰的信息,但正如你所说,这只是猜测,因为大多数约会应用程序都不会在线分享其结构设计。
您的第一个选项确实解决了问题,但正如您所说,它每天都会呈指数级增长(考虑到每天都会创建x个新帐户) 但我认为答案仍然在那里。 关键在于你的问题,想象一下一个来自洛杉矶的女孩,在过去的一个月里大约有 10 万个个人资料与她进行了互动,如果我们确实以这种方式解决问题 (n°1) 10 万个新的“互动”表,其中最有可能只有interactedID(女孩的个人资料)、interactorID(通过个人资料交换的男孩/女孩)以及指示交互的Flag。 该解决方案再次确实仅在理论上解决了问题,但考虑到用户数量,确实会产生扩展问题,数据库将是数据的垃圾。
但是我们可以限制这种交互,创建尽可能少的表。 而不是遵循这种模式:
--创建一个新的配置文件: --对于每个现有的个人资料,都会创建一个专门用于与我互动的新表
我们可以限制创建的表的数量:
1-创建一个新的配置文件: 2-根据您的起始兴趣(位置、性别、年龄等)查询的新配置文件组已创建并标记为 GroupOfInterest 3-您现在已经查询到了链接到您帐户的可能匹配项的数组(这可以在本地保存) 4-每次您对某人不感兴趣时,您都可以开始浏览这些个人资料并滑动它们(向右/向左我不记得了),然后将个人资料 ID 放入新的 DenyList 组中。
--任何时候您想要寻找新的人,您都可以按照步骤 2 清除现有的 GroupOfInterest 并用新的兴趣填充它,但是在 GroupOfInterest 内部,不能有具有您个人 DenyList 中的 profileId 的人。
这样,您只需创建一个链接到您不感兴趣的用户的表。 每次创建新查询并寻找新人时,您都会循环浏览该内容。
我可能弄错了,但这似乎是一个更可行的解决方案,可以为平台上的每个人绑定一个表给我