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

图片打标签

  •  
  •   hmshsnyt · 2019-10-03 09:54:33 +08:00 · 2403 次点击
    这是一个创建于 1883 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个 id 对应于一个图片 url 链接,现在是图片 url 会重复,现在只要新的 id 对应 url 有重复则继承之前给 url 打过的标签,想过用 mysql 的索引或者唯一键,但是图片 url 比较长,并且是 varchar 的,想问下有没有好的办法

    7 条回复    2019-10-03 17:40:49 +08:00
    dswyzx
        1
    dswyzx  
       2019-10-03 10:23:51 +08:00
    我以前写的爬虫.url 直接 md5 后存,但只做是否重复判断用.
    hmshsnyt
        2
    hmshsnyt  
    OP
       2019-10-03 10:36:49 +08:00
    @dswyzx 这个我也想到了,用 boomfilter,但是只能知道是否重复,没有与以前 id 的映射关系,也就不知道这个图片的以前标签属性
    mumbler
        3
    mumbler  
       2019-10-03 11:00:06 +08:00 via Android
    把 url 的 md5 建个字段存下来,主键唯一
    ebony0319
        4
    ebony0319  
       2019-10-03 11:06:51 +08:00 via Android
    url 过长问题:?id=abc123&code=5478
    多设计一列 code,code 完全随机,可以重复。
    hakono
        5
    hakono  
       2019-10-03 12:00:44 +08:00 via iPhone
    你这逻辑实际上是 url 的 md5 值和 id 一对多关联
    具体怎么设计表你随便找找一对多的表设计思路就知道了
    mysql 下一个方法就是
    单独一个表,url 的 md5 做主键唯一,然后另外一个 text 的字段存放字符串形式数组,字符串可以逗号分割也可以转成 json
    但这样一个坏处就是没法从 id 反查到 url 的 md5 (如果你没这需求就不用在意这个坏处了)

    当然上面是歪门邪道。。。
    最简单方法就是给 id 那个表添加个 url md5 的字段然后加索引,delect id,urlmd5 from ids where urlmd5 =xxxxxxxxxxxxxxx

    就能搜出你要的信息了
    hakono
        6
    hakono  
       2019-10-03 12:01:41 +08:00 via iPhone
    @hakono 打错 是 select 不是 delete
    xupefei
        7
    xupefei  
       2019-10-03 17:40:49 +08:00 via iPhone
    @hmshsnyt boom filter,一用电脑就炸了😂
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2881 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 00:03 · PVG 08:03 · LAX 16:03 · JFK 19:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.