关于标签系统的又一点想法。

原创 2015年05月05日 18:25:45

前段时间,写过一篇《关于标签系统的一点想法。》。但其实没有谈到里面的内容,是有一部分来自与刘鑫老师的聊天,当时他给了我许多肯定,也是让我觉得记录下来很有必要的原因。

前一篇里没有提到,我跟刘老师谈到一个更加深入一点的、关于标签系统的想法。主要原因是因为我尚不肯定这是否也属于标签系统。直到最近disylee 送了一本标签 : 标记系统设计实践给我,里面的一个小节让我为自己的想法找到了理论依据。

很不错的一本书,没有让我失望,解答了我心中的一些困惑。书有点啰嗦,但也正因为此显得“系统”,我向来觉得“系统”的知识才是知识,第三、四章是精华,喜欢思考的架构师可以一读。

接下来谈谈我的“又一点想法”。

大家做项目的时候,肯定为很多“属性”所烦恼过。比如你做一个电商网站,是卖衣服的,结果你为衣服建模,定义了一堆类似品牌、尺寸、颜色、材料、款式、工艺等字段。后来又做一个卖家具的电商网站,你发现之前定义的这些字段基本上没有用了。举个例子,之前衣服的尺寸,可能只是裤子的腰围,现在沙发的尺寸,却是长宽高的三维数据;如果把三维数据硬塞进原来的尺寸字段,又不利于检索和过滤。

这样的项目做多了,我就开始想,其实尺寸、品牌,等等,不就是一个标签吗?我随便加就是了。这时候遇到一个问题,就是标签的多义性,比如某物品你加了一个“绿色”的标签,这个有可能是它的外观是绿色的,也可能是它的品质是绿色的(有机食品什么的)。抓狂。这时候你可能会想到把属性名也加上去,比如以“color:green”作为标签,以消除二义性。

赞赞赞!

你跟我想到一块了。不过再往深想你会发现每次都需要对标签尝试做 attr:value 切分,还是非常不方便的,而且很多时候你需要在界面上对 attr 所对应的 value 进行归纳,因为在用户层面你最好是提供一个“颜色”的下拉框来让他选择,而不是让他输入 green。

所以我想到要建立两个表,一个专门来管理系统中用到的 attr,另一个则是相应的 value。在跟刘老师沟通时候,我想到的就是这些,这让我有点怀疑“这还算不算是标签”?走到读完上文说过的那本书,从那个 1930 年的印度图书管理员那里找到了依据,是的,这仍然是标签,但一般又称之为 Faceted classification。

每一个 facet 可以视为度量一个物体的角度。那么刚才说过的:

所以我想到要建立两个表,一个专门来管理系统中用到的 attr,另一个则是相应的 value。

就很合理了。这样的一个标签系统是如此的合理,以至于已经在许多现代电商网站已经使用多年,比如 amazon 能够很方便地使用尺寸、颜色甚至价格区间来进行商品检索,就得益于此。

当然,这方面也有很多开源的项目,额,可能我搜索的姿势不对,java 方面暂时没有找到相关的库,但 Python 的话,有一个基于 django 的 djfacet,也有一个基于 plone 的 collective.facets。壮哉我大蛇教。

额,至于 PHP,最好的编程语言大概是不需要这些的。哈哈!

版权声明:本文为博主原创文章,未经博主允许不得转载。

关于标签系统的一点想法。

我跟几个人谈到过我这个标签系统。标签系统,tagging,在 web 2.0 时代大行其道,特别是 del.icio.us 大量应用而广受关注。但如今,随着 del.icio.us 的消逝鲜有人关注了...
  • lanphaday
  • lanphaday
  • 2015年04月13日 14:06
  • 10419

关于物联网,人工智能的想法一

关于物联网,人工智能的想法
  • DONGWEIJHZHANGLI
  • DONGWEIJHZHANGLI
  • 2017年04月30日 20:35
  • 302

关于团队合作的一些看法

我现在待的公司是一个分公司,在软件开发上经常需要和各个分部进行合作,而在这段合作中,我渐渐发现了一些不可避免的问题。 特此记录一下,希望以后注意并想办法解决。 1.时差导致的工作延误 ...
  • u011107827
  • u011107827
  • 2015年04月09日 16:41
  • 438

关于泛设备系统的一点想法

“泛设备系统”这个名词,是笔者生编硬造的一个词语,指的是可以在不同平台设备上运行的、基于同一设计和系统组件(如内核)的系统。它是来源于一点新闻(有关报道如《谷歌证实Chrome OS将与Android...
  • dean_1000
  • dean_1000
  • 2011年07月29日 18:54
  • 100

关于 Response.end() 一点想法

使用  Response.end() 会产生ThreadAbortException 的异常。 试着要解决该问题。我产生该问题的场景是: GridView  导出为Excel  涉及代码为: Stri...
  • yubanzhi
  • yubanzhi
  • 2010年09月03日 13:54
  • 1557

脱不花:关于时间管理的几个想法

脱不花:关于时间管理的几个想法
  • czg13548930186
  • czg13548930186
  • 2017年05月20日 14:22
  • 658

关于WebWind一点想法

关于WebWind这一REST风格的Java MVC框架,首先学习下什么是REST,表象化状态转变(英文:Representational State Transfer,简称REST)是Roy Fie...
  • cyq1984
  • cyq1984
  • 2010年01月29日 09:51
  • 2049

关于面向对象的一点想法

C++等语言的“面向对象”是源代码级别的,是由编译器为你呈现的“一片‘面向对象’的假象” ,它只限于编译器的这一头(输入),编译器的另一头(输出)同样是一堆十分“physical”的二进制指令序列,和...
  • wishfly
  • wishfly
  • 2008年03月23日 10:41
  • 704

一点想法,关于SNS

SNS,社交网络,Social Network Site也许是08年中国网络界最火的一个东西。也许当04年facebook被在哈佛创造出来的时候,扎克伯格没有想到他会让自己成为一代网络枭雄也许当06年...
  • yiboo
  • yiboo
  • 2008年12月03日 04:37
  • 383

关于屏蔽的一点想法

 经常遇到要屏蔽的系统,经常用的是:oncontextmenu="return false" onselectstart="return false" ondragstart="return fals...
  • MorningTea
  • MorningTea
  • 2005年10月17日 09:26
  • 923
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:关于标签系统的又一点想法。
举报原因:
原因补充:

(最多只允许输入30个字)