像 tinder 探探 这一类的左滑右滑用户是怎么排除的呢? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
whatisnew

像 tinder 探探 这一类的左滑右滑用户是怎么排除的呢?

  •  
  •   whatisnew 2021 年 3 月 23 日 1755 次点击
    这是一个创建于 1858 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如果用 mysql NOT IN 排除的话基本不可行,这怎么做的呢?

    8 条回复    2021-03-23 19:20:41 +08:00
    jjianwen68
        1
    jjianwen68  
       2021 年 3 月 23 日
    redis 缓存可能性更大吧
    ntdll
        2
    ntdll  
       2021 年 3 月 23 日
    这个更偏向业务设计问题,而不是技术问题。

    未付费用户一天只能划限定的数量,假如是 100 个,业务低谷时期,查出来 100 个就完成了,今天随你怎么玩,都不查库了。

    付费用户假设可以无限划,可以以安全名义限定超过 200 个以后,5 秒最多划一次,那么一天峰值也就不到 2 万个,也可以在业务低谷期预先查询出来。

    ---

    以上为假设,实际情况中,由于用户在地理位置上会移动,所以预先查询所有结果集是可能性不大的。

    但是由于位置的限制,每次查询并不需要在所有用户中做排除条件,因此实际上 NOT IN 的性能开销很可能是可以接受的。偏僻的地区,可能周围 5 公里就几千个人,闹市区也许就几万人?
    whatisnew
        3
    whatisnew  
    OP
       2021 年 3 月 23 日
    @gam2046 这个很明显是不可行的。每天 100 个,100 天就是 10000 个,NOT IN 一万个用户 ID 很明显不可行。
    ic2y
        4
    ic2y  
       2021 年 3 月 23 日
    布隆过滤器?为每个正在活跃的用户,加载一个布隆过滤器,不喜欢的人,加入过滤器; 后续的推荐列表里,如果布隆过滤器命中,则不推荐,直接尝试推荐下一位;布隆过滤器存在一些误报的问题,概率很低,就当两个人没有缘分。
    HeapOverflow
        5
    HeapOverflow  
       2021 年 3 月 23 日 via iPhone
    为什么不能整一个字典,直接看有没有目标用户的 uid
    cxe2v
        6
    cxe2v  
       2021 年 3 月 23 日
    查询可用用户列表时候随机查,然后使用者账号这边有个记录了左滑右滑的列表项,在随机查出来的用户列表里如果在这个用户账户下有记录,则跳过这个用户
    monsterxx03
        7
    monsterxx03  
       2021 年 3 月 23 日
    一般是要提取用户特征, 比如 20 ~ 25 岁, 男性, 注册 7 天内, 爱好 xxx, 根据特征预计算出成百上千个 segment, 用户匹配的时候根据自己的特征去不同的 segment 里抽用户, 选择不喜欢, 可能只是在 userA->userB 的关系里记录一个负权重.
    怎么及时得更新 user segment, 用户关系怎么存储都是个技术活, 高度取决于产品和运营策略.
    sql not in 这种属于学生作业级别操作...有用户量的社交产品不可能这么高
    watzds
        8
    watzds  
       2021 年 3 月 23 日 via Android
    在客户端去重也行吧,后端同步数据
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1100 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 67ms UTC 18:19 PVG 02:19 LAX 11:19 JFK 14:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86