V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
sym134
V2EX  ›  PHP

需要做个首页用户推荐,不知道有老司机可以分享一下经验吗?

  •  
  •   sym134 · 2020-10-20 09:19:43 +08:00 · 3392 次点击
    这是一个创建于 1500 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需求是首页有个用户推荐板块,可以一直分页加载,直到数据全部加载完

    这个推荐没有什么特定的匹配或是人为指定,只是想每次打开都不一样,或是随机去展示,但用随机分页又会有重复的数据出现,不知道过往老司机有何办法或是更好的推荐方式

    15 条回复    2020-10-21 15:50:56 +08:00
    wangritian
        1
    wangritian  
       2020-10-20 09:34:55 +08:00
    先定一个推荐用户数量限制 N,因为不太可能有人耐心的刷完这么多推荐用户,每 M 分钟从 mysql 随机提取 N 个到 redis,在 php 代码中做分页
    ben1024
        2
    ben1024  
       2020-10-20 09:42:37 +08:00
    数据整片输出,随机返回页数,加个用户计数器记录请求输出页数(用户登出清空计数)
    返回时两页数求差集,重排输出随机页数
    huayumo
        3
    huayumo  
       2020-10-20 13:28:30 +08:00
    可以根据发帖量来排序,并分页就完了,感觉没必要搞那么复杂
    hahaba
        4
    hahaba  
       2020-10-20 13:30:52 +08:00
    基于用户或者物品的协同过滤
    ox180
        5
    ox180  
       2020-10-20 13:43:56 +08:00
    既然如此,可以上个 word2vec 做内容推荐哇
    eason1874
        6
    eason1874  
       2020-10-20 13:53:28 +08:00
    再推荐也不可能推荐上千个吧?一般最多就一百多几十个,一两百多个。

    干脆像 2 楼说的,一次查完,随机输出。如果查询比较耗时,就二次查询的时候加上前面出现过的 ID 作排除查询,一百几十个 ID 也不会让 SQL 变多长。
    freeeyu
        7
    freeeyu  
       2020-10-20 14:07:42 +08:00
    简单的做法,随机取页数展示,翻页按顺序翻,到最后一页之后从第一页开始取,取到你随机的那一页就到底了..
    chogath
        8
    chogath  
       2020-10-20 15:07:01 +08:00
    漏斗
    ladotech
        9
    ladotech  
       2020-10-20 15:46:50 +08:00
    想象一下一副洗好的扑克牌,切一下,然后从最上面一张开始依次展示出来。服务器定时做洗牌,用户浏览时做切牌。
    sym134
        10
    sym134  
    OP
       2020-10-21 15:41:48 +08:00
    @chogath 一脸懵逼,求大师指点
    sym134
        11
    sym134  
    OP
       2020-10-21 15:46:16 +08:00
    @freeeyu 这个的确比较简单😄6666
    sym134
        12
    sym134  
    OP
       2020-10-21 15:47:52 +08:00
    @ox180 google 了一下,一脸懵逼,我这肉鸡应该吃不消,如有方便的工具方法可以推荐一下 😄
    sym134
        13
    sym134  
    OP
       2020-10-21 15:49:01 +08:00
    @ben1024 不错不错,我感觉可以专门缓存一个公共的总页数,然后用户随机提取页数,同时求差集
    sym134
        14
    sym134  
    OP
       2020-10-21 15:49:39 +08:00
    @xunbug 研究过,但 php 恐怕吃不消,其他语言没学过,压力山大😓
    sym134
        15
    sym134  
    OP
       2020-10-21 15:50:56 +08:00
    @wangritian 弄个这么个,但缓存的量感觉太多了😓
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   6049 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 02:43 · PVG 10:43 · LAX 18:43 · JFK 21:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.