V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
daoluan
V2EX  ›  问与答

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

  •  
  •   daoluan · Aug 3, 2013 · 2934 views
    This topic created in 4650 days ago, the information mentioned may be changed or developed.
    经常在浏览网页(比如一个博文)的时候,标题下会有标签,点击某个标签,网页挑战,系统会从后台数据中搜索到对应的 item,把结果返回给用户,如果 item 很多,标签也很多,大!数!据!,是如何「快速」的?

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

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


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

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

    LPUSH article:article_id:tags "tag1" "tag2" "tag3"
    LPUSH tag:tag1 "article_id"
    LPUSH tag:tag2 "article_id"
    LPUSH tag:tag3 "article_id"
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1063 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:47 · PVG 02:47 · LAX 11:47 · JFK 14:47
    ♥ Do have faith in what you're doing.