V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
daoluan
V2EX  ›  问与答

一堆标签标记了一堆 item。如何通过标签快速找到对应的 item?

  •  
  •   daoluan · 2013-08-03 20:09:39 +08:00 · 2543 次点击
    这是一个创建于 3943 天前的主题,其中的信息可能已经有所发展或是发生改变。
    经常在浏览网页(比如一个博文)的时候,标题下会有标签,点击某个标签,网页挑战,系统会从后台数据中搜索到对应的 item,把结果返回给用户,如果 item 很多,标签也很多,大!数!据!,是如何「快速」的?

    小白想:直接使用数据库存储,每个 item 有对应的标签 id,要的时候直接 select 出来。应该没有那么简单的?!

    数据是实时的,也就是每个时刻可能用户都在添加数据,所以无法提早预备查询结果,比如我把 python 标签的所有 item 先存好。


    最近,我在项目中遇到了这个问题,不知道大公司里的产品中是如何做的?用到了什么算法?

    比如 stackoverflow 上 http://stackoverflow.com/tags
    比如 知乎等等等等
    2 条回复    1970-01-01 08:00:00 +08:00
    crazybubble
        1
    crazybubble  
       2013-08-04 08:01:58 +08:00
    mongodb做tag什么的很方便,一个doc也就是一个item里,包含一个array用来存tag,然后给doc里的这个array做index
    Perry
        2
    Perry  
       2013-08-04 08:33:46 +08:00
    如果是redis的话结构应该类似这样。。

    LPUSH article:article_id:tags "tag1" "tag2" "tag3"
    LPUSH tag:tag1 "article_id"
    LPUSH tag:tag2 "article_id"
    LPUSH tag:tag3 "article_id"
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2144 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 15:48 · PVG 23:48 · LAX 08:48 · JFK 11:48
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.