怎么样去学SEO(一)

我前面写的这些东西,很多看起来是很偏门的。不过我并不是故意挑这样的内容去写。这些东西,其实正是我想要很多SEOer去探索的。也都是我平常工作中会用到的知识和工具。

本来这篇文章我打算讲一下分词和索引库,但是写到一半,发现如果我不把怎么学SEO讲明白的话,有些人可能又觉得我写了一个偏门的东西了。 还有,上次网站备案的时候很多人想让我写一下怎么学SEO。所以这篇文章就讲一下怎么来学SEO。我希望这篇文章能广为传播一下,让很多SEOer意识到这些。

先定义一下,这里所说的SEO,是纯粹的指从搜索引擎获得大量优质的流量,把网站要实现的最终效果最大化。有些人把网站运营的内容也纳入到SEO范围,不过这篇文章不讨论网站运营的东西,尽管我是很建议大家把网站运营和SEO结合。

 在“SEO作弊与反作弊”里,我把SEO和心理学家类比过。其实他们有相同点也有不同点。

相同点就是:你研究的对象,有很多的秘密等着你去探索,对于研究它的人,经常都会有东西是你不知道的。 不同点就是:心理学是一门自然科学,自然界创造的东西,以人类现在卑微的探索能力,你永远无法说你有多接近真实。但是搜索引擎,却是完全由人自己创造的,所以理论上还是能完全把搜索引擎弄明白的。

这就谈到了一个真正的SEOer应该学习的第一大技能:弄懂搜索引擎相关技术和原理。

我是不太同意那样的说法的:做SEO不需要太技术化,考虑好用户体验就不用担心什么了。考虑用户体验,做好内容是绝对应该做的,这其实是在网站运营方面就要考虑的东西,但是技术化也是另一个非常重要的东西,它很多时候甚至是决定性的条件。

用常识想一想,我们在一个叫做 google 或者百度的平台上拉流量,但是我们对于这个平台内部是怎么运作的竟然不了解,这不是搞笑吗?? 农民种菜还要了解天气和季节对农作物的影响呢。

不光要了解,而且要把这些知识应用到SEO,这种了解还需要达到一定的深度才可以。 像迈克·摩尔,做了20多年搜索引擎开发,在搜索引擎领域有多项专利,他也在做SEO。而现在有些SEOER,仅仅知道怎么样排列关键字就觉得是在做SEO了。这个差距真的不是一般的大。当然,最后的结果也是很悬殊的。 迈克·摩尔说过:只有少数人能真正控制搜索引擎。我一直认为他自己就是那种能控制搜索引擎结果的人,记得2年还是3年前,他的团队就硬生生把一个网页在搜索“SEO”的时候排在了第四,那个网页,当时连一些资深的SEOER都看不明白怎么能排在第四的。

关于怎么在页面上排列关键字,一个报纸的排版人员其实更擅长,他们非常明白怎么兼顾阅读性和内容突出度。如果罗列关键字的技巧就是SEO,那也难怪很多人局外人说SEO非常简单了。

至于怎么去了解,我推荐大家先去当当网搜一下,有很多的介绍搜索引擎原理的书籍。如果有条件,还需要自己做一个搜索引擎。如:可以用Lucene之类的自己搭建一个搜索引擎实践一下。 虽然google对自己的很多技术都很保密,但是放心好了,搜索引擎并非google和百度独有的东西。把类似的搜索引擎了解清楚了, 你再来看google和百度,发现绝大部分还是一样的。

了解得比较透后再来做SEO,你就能从搜索引擎的角度出发来看待你在做的事情。你会非常的理解做搜索引擎的人,了解他们的短板在和痛苦在哪里。了解他们将来会怎么去改进他们。

第二大技能:了解网站制作相关的技术,至少能独立做一个静态网站。

了解完了搜索引擎,还要了解我们服务的对象–网站。能从头到尾自己做一个静态网站是最基本的要求,当然能做动态网站更好。这个就要求你懂动态网页开发语言,精通HTML,基本的CSS,javascript 等等。一个好的SEO人员,最好能帮助网页设计师改写和优化代码。这个技能,在你做内部优化的时候,能帮助你很多。

SEOer每天做的事情,非常多和网站的技术相关的。 要配合搜索引擎的要求对网站进行调整,仅仅依靠工程师和网页设计人员是不行的,你要清楚里面的细节。不然你都不知道改动某个地方可以对SEO有利。

会网页开发后,还要知道网站架构相关的知识,服务器架设、CMS、还有数据库的性能调优等等都是需要了解的。比如,在稍微大一点的网站,提高单个页面的加载速度,对SEO都是非常有利的。但是哪些改进可以提高加载速度呢? 依靠工程师,它给你提高10%的加载速度你已经感恩戴德了,但是如果你自己懂的话,把页面冗余代码除去,js外调合并压缩,图片实时压缩,页面cache, 马上提高400%的加载速度,这个效果是不一样的。

对这两大技术方面的了解,越详细越对自己有利。我在“锚文本在SEO当中的重要性”中提过:好的SEO,一切因素都是可控的。那要拿什么来保证一切因素都可控。 是首先你了解到了所有的因素,然后你具备了控制这些因素的能力。这样,你做的每一个改动,你非常清楚带来的效果会是什么。这个就是SEO的核心竞争力。

冒号课堂§1.5:开发技术

冒号课堂

第一课 开班导言(5)

1.5 开发技术——实用还是时髦? 郑晖

摘要

关于框架、设计模式、架构和编程范式等开发技术的讨论

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

借我借我一双慧眼吧,让我把这纷扰看得清清楚楚明明白白真真切切

—《雾里看花》 !预览

任何概念和技术都不是孤立的,如果不能在纵向的时间和横向的联系中找准坐标,便似那群摸象的盲人,各执一端却又自以为是

库和工具包是为程序员带来自由的,框架是为程序员带来约束的

设计模式是软件的战术思想,架构是软件的战略决策

知识的学习有几种方式:一种靠记忆,一种靠练习,一种靠培养

学习编程范式能增强编程语言的语感

?提问

库和工具包与框架有何不同?

什么是设计模式、惯用法和架构?

为什么要谈编程范式,而不是框架、设计模式或者架构?

:讲解

“现在我们具体介绍一下编程范式。”冒号忽然顿住,隐觉一抹失望从众人脸上掠过,问号更是欲言又止,便鼓励他开口。

问号略显迟疑:“您说编程范式是一种心法,那框架、设计模式还有架构呢?”

“原来如此!”冒号心下了然,“让我说说你们最想听些什么吧。”

众现不信之色。

冒号说道:“一种是具体而实用的,最好能立马解决学习和工作中的问题;一种是时髦而花哨的,管它有用没用,不学点心里就是不踏实。”

[…]

冒号课堂§1.4:初识范式

冒号课堂

第一课 开班导言(4)

1.4 初识范式——程序王国中的世界观与方法论 郑晖

摘要

初步引入编程范式

目录

!预览 ?提问 :讲解 ,插语 。总结 “”参考

言者所以在意,得意而忘言

—《庄子•外物》 !预览

得形而忘意,无异舍本逐末;得意而忘形,方能游刃有余

当你编程之时,便进入到自己创造的世界之中。这是你的世界,只有注入你的想象力、创造力和激情,它才有勃勃生机。你编写的岂止是代码,分明还有乐曲;你敲击的岂止是键盘,分明还有琴键;你运行的岂止是程序,分明还有世界。当优美的旋律奏起,整个世界都随之翩然起舞,一种莫可名状的满足是否会充溢你的全身?

找对象是“对象导向”的,去约会是“面向对象”的

?提问

什么是编程范式?

编程范式与编程语言的关系是什么?

:讲解

问号第一个从小说里走出来,问道:“刚才谈到了低级语言和中级语言,现在该谈高级语言了吧?”

冒号微叹:“高级语言大概有近千种,流行的也不下几十种,有时候选择过多反而无所适从啊。”

逗号不以为然:“最流行的不就那么几个:Java、C++、C#还有VB吗?”

不意此言遭到冒号连珠炮似的反问:“可你知道它们为什么会流行吗?是不是学会这几样就是一个合格的程序员了?它们会不会变得不那么流行,甚至被其他语言取代?如果不会,为什么?如果会,又怎么办?”

逗号赧然语塞。

冒号口气放缓:“掌握一门语言的语法、工具和技巧固然重要,但那只相当于学会一门兵器的招法,更重要的当然是心法。招法重形,心法重意。得形而忘意,无异舍本逐末;得意而忘形,方能游刃有余。下面要谈的就是一种心法:编程范式。”

问号不解:“编程范式?听上去很学究,那是什么东东?”

[…]

冒号课堂§1.3:语言选择

冒号课堂

第一课 开班导言(3)

1.3 语言选择——合适的就是好的 郑晖

摘要

简要回顾计算机语言

目录

!预览 ?提问 :讲解 ,插语 。总结

尺有所短,寸有所长

—《楚辞》 !预览

评判语言优劣,如同争论兵器高下,倘若撇开使用的主体和对象,皆为空泛之谈

高级语言好比长兵器,威力强大却难免滞重,长于大型应用,可谓“一寸长,一寸强”;低级语言好比短兵器,轻便灵活却难免风险,长于底层应用,可谓“一寸短,一寸险”

西门吹雪的西来一剑,那是C语言;李寻欢的小李飞刀,那是汇编语言;陆小凤的灵犀一指,那是机器语言

?提问

语言好坏的标准是什么?

计算机语言的发展经历了哪几个阶段?

第四代语言和第五代语言与前三代语言相比,有什么不同?

什么是低级语言和高级语言?各自的特点与应用范围是什么?

为什么称C语言为中级语言?

:讲解

问号觉得自己的问题并未解决,追问:“这么多种语言,仅凭流行度就能分出主次优劣吗?”

“流行度当然不是唯一的指标。”冒号答道,“语言的主次优劣因人而异,答案在你们自己身上。还是刚才那句话,真正的老师就是你自己。”

期待的目光如风中之烛般开始黯淡。

冒号又道:“评书里名师授艺时,常常要徒弟自己挑选称手的兵器。威武的刀,灵活的枪,飘逸的剑,浑厚的棍,粗犷的斧,霸道的锤,诡异的鞭,无不谙合武者的个性。评判语言优劣,如同争论兵器高下,倘若撇开使用的主体和对象,皆为空泛之谈。”

句号若有所悟:“所以好的语言就是适合编程者和解决对象的语言。”

“非常正确!”冒号赞许道,“这就是问号同学要的答案。”

引号并不满足:“可我记得评书里经常描述高手的一句话¬:十八般兵器样样精通。” […]

冒号课堂§1.2:首轮提问

冒号课堂

第一课 开班导言(2)

1.2 首轮提问——什么语言好? 郑晖

摘要

讨论流行的计算机语言

目录

!预览 ?提问 :讲解 ,插语 。总结

敬畏老师莫如敬畏真理

—题记 !预览

真正的老师是你自己

没有激情作氧气,灵感的火花注定转瞬即灭

?提问

谁是你真正的老师?

程序员是吃青春饭的吗?

计算机语言这么多,到底学哪个好?

:讲解

众人面面相觑,一阵沉默后开始窃窃私语,显然有些不太习惯这种教学方式——笔记本上还没写两个字呢,老师就把球给踢回来了。

冒号也不说话,只是微笑地望着大家。

还是问号打破僵局,开始发问:“老师——”

冒号扬手打断他:“请不要管我叫老师,真正的老师是你自己。本班的一个特色是:师生角色模糊,大家自主学习,相互启发,教学相长。”

“老冒——”问号顿了顿,全班哄堂大笑,“学软件开发,当然得先学语言,计算机语言这么多,到底哪个好,或者说学哪个好?”

冒号笑道:“这个问题很典型,很实在,也很初级。”

问号被“初级”这个字眼刺得面上一红。

“如果信奉流行的就是好的,那么也许可以给你一个参考答案。”冒号转身在黑板上写下一串清单¬——

Java(19.40%) C(15.84%) C++(9.63%) VB(8.84%) PHP(8.78%) […]

冒号课堂§1.1:开班发言

冒号课堂

第一课 开班导言(1)

 

课前导读

第一课为整个课堂学习的内容和风格定调,主要围绕三个问题进行展开:要成为一个优秀的程序员,最需要学习什么知识?领会什么思想?具备什么精神?

本课共分五节——

1.开班发言——程序员的四层境界

2.首轮提问——什么语言好?

3.语言选择——合适的就是好的

4.初识范式——程序王国中的世界观与方法论

5.软件技术——实用还是时髦?

1.1 开班发言——程序员的四层境界 郑晖

摘要

对程序员的一些忠告和建议

目录

!预览 ?提问 :讲解 。总结

授人以鱼不如授人以渔

—古语 !预览

学会不如会学,会学不如会用,会用不如被用

如果知识是水,我们要挖掘最先涌动的泉眼

如果知识是火,我们要捕捉起初点燃的火花

如果知识是树,其树大根深,不究立固之本则无以知过去;其枝繁叶茂,不握支撑之干则无以知当下;其蓬勃旺盛,不察生长之点则无以知将来

越是喧嚣的世界,越需要宁静的思考,让躁动的心灵得以平息,让蕴藏的灵性得以释放

知识之上是思想,思想之上是精神

?提问

软件开发者的成长需要经历有哪些阶段?

要想在IT业中生存与发展,传统的学习方式是否够用?

优秀程序员应该具备哪些素质?

:讲解

冒号开了个程序员提高班,今天迎来了首期学员,他们是问号、句号、逗号、引号和叹号,皆为IT业的新兵。望着台下洋溢着青春与渴望的脸庞,冒号开始了他的开班发言——

大家好!先自我介绍一下,本人姓冒名号字解之。诸位不必叫我老师,就叫老冒好了。比在座各位痴长几岁,“老”是担得的,“师”却不敢妄言。在下编程多年,自觉小有所成,不敢专藏,特开此班与众共享。虽系一家之言、一孔之见,若能抛砖引玉,又何惧方家之哂?疏谬之处,还望海涵斧正,不致自误误人。

客套已毕,言归正传。本班主要采取讨论的形式,只要是软件开发中值得讨论的,但凡本人力之所及,均可共同探讨。

本班的宗旨是:学会不如会学,会学不如会用,会用不如被用。对于一个软件开发者来说,这意味着四个阶段:

学会(知其所然)——掌握一些具体编程知识的初级程序员

会学(知所以然)——能快速而深刻地理解技术并举一反三的程序员

会用(人为我用)——能将所学灵活运用到实际编程设计之中的高级程序员

[…]

对待BUG——Programmers(5)

载于《程序员》杂志09年第8期。

最近实在是太懒了~~买了新板子,但也好久没有画。只好先把约稿拿出来凑数。不过我马上就会恢复状态啦,在去香港削屏之后,哇哈哈哈。

这个系列的漫画讲述程序员——这种神秘人类的囧事,故事多来源于我身边的程序员朋友,且以互联网开发背景为主。

如果你有什么可乐的关于程序员的故事、对话、代码,愿意通过漫画的形式分享,请给我发邮件。arthur369@gmail.com。

《冒号课堂》目录

上篇:编程范式与编程语言 第一课 开班导言 §1.1:开班发言——程序员的四层境界 §1.2:首轮提问——什么语言好? §1.3:语言选择——合适的就是好的 §1.4:初识范式——程序王国中的世界观与方法论 §1.5:开发技术——实用还是时髦? 第二课 重要范式 §2.1:命令范式——一切行动听指挥 §2.2:声明范式——目标决定行动 §2.3:对象范式——民主制社会的编程法则 §2.4:并发范式——合作与竞争 第三课 常用范式 §3.1:泛型范式——抽象你的算法 §3.2:超级范式——提升语言的级别 §3.3:切面范式——多角度看问题 §3.4:事件驱动——有事我叫你,没事别烦我 第四课 重温范式 §4.1:函数范式——精巧的数学思维 §4.2:逻辑范式——当算法失去了控制 §4.3:汇总范式——一张五味俱全的大烙饼 §4.4:情景范式——餐馆里的编程范式 第五课 语言小谈 §5.1:教学计划——接下来的故事 §5.2:数据类型——规则与变通 §5.3:动态语言——披着彩衣飞舞的脚本语言 §5.4:语言误区——语言的宗教情结 第六课 语言简评 §6.1:系统语言——权力的双刃剑 §6.2:平台语言——先搭台后唱戏 §6.3:前台语言——视觉与交互的艺术 §6.4:后台脚本——敏捷开发的利器 下篇:抽象机制与对象范式 第七课 抽象封装 §7.1:抽象思维——减法和除法的学问 §7.2:数据抽象——“做什么”重于“怎么做” §7.3:封装隐藏——包装的讲究 第八课 抽象接口 §8.1:软件应变——随需而变,适者生存 §8.2:访问控制——代码的多级管理 §8.3:接口服务——讲诚信与守规矩 第九课 继承机制 §9.1:继承关系——继承财富,更要继承责任 §9.2:慎用继承——以谨慎之心对待权力 第十课 […]

浪潮之巅第十六章 印钞机——最佳的商业模式(四)

发表者:Google(谷歌)研究员 吴军

第三节 戴尔的虚拟工厂

一个传统的制造业需要通过产品设计、原料采购、仓储运输、加工制造、订单处理、批发经营和零售七个环节才能收回投资、获得利润。(当然,产品需要市场推广和广告推销。)一个企业或者投资人,需要先投入资金,然后经过这么一大圈才能挣到钱。所有的公司总是在尽可能降低各个环节的成本,以获得比同行更高的利润率。六十年代,日本人在将工厂里的生产流水线的概念扩展到仓储运输和整个加工制造中,大大降低了制造业的成本。在很多日本工厂里,没有库存零件,当第一批零件用完了,第二批已经用汽车送到,而第三批正在路上,第四批在上家的流水线上。同样当产品一下流水线,开往港口的汽车已经准备装货了。这种高效率,使得“日本制造”打败了美国和欧洲制造,迅速占领了世界市场。为了进一步降低成本,欧美日大公司开始在东南亚和中国建工厂,将加工制造这个环节的成本压到了最低。

其实,最聪明的办法是直接减少其中一个或者几个环节,这样资金从投入到收回最快,利用率最高,这方面做得最好的是计算机制造商戴尔(Dell),它将上述七个环节减少到两个,使得它打败各家兼容机成为世界上最大的计算机制造商之一。

戴尔公司以它的创始人麦克戴尔名字命名。戴尔和盖茨、乔布斯一样,也是一个没有读完大学的创业者。和中关村无数攒PC的人一样,戴尔1984年还在奥斯丁的德州大学读本科时就开始攒PC机卖。一个暑假他挣了一辆宝马汽车,尝到攒PC机甜头的戴尔干脆退学专职攒PC,并且成立了戴尔公司。戴尔公司相比当时的IBM,甚至兼容机的龙头老大康柏(Compaq)没有什么技术优势可言。在二十世纪八十年代PC机起步时,比戴尔大的兼容机公司不计其数。但是戴尔在商业模式上改进了传统制造业从设计到销售的过程,使得戴尔计算机的价格比其竞争对手低得多,市场占有率渐渐成长起来,到2000年终于成为美国最大的个人计算机制造商。

和很多制造业外包一样,戴尔为了降低成本干脆不设工厂,而由东南亚主要是台湾的OEM工厂加工。这样,它就不需要投入资金于建工厂和维持工厂的开销。接下来,戴尔干脆将产品设计也外包了。自己攒过PC机的读者会知道,PC机的设计其实没有什么学问,和搭积木差不多。至于原料采购,戴尔每年和英特尔、AMD、Seagate等几家主要PC的芯片和配件生产厂商谈好协议,由这些公司直接将货发给那些OEM厂,便省去了原料采购和一半的仓储运输的环节。(计算机成品从OEM厂到顾客的仓储运输现在尚未省去。)最后,戴尔在销售渠道上做文章,将批发和零售商的利润降到最低。

像计算机这样的产品,过去设计、制造和销售(包括市场推广)分别占售价的三成、三成和四成。也就是说零售价在一万人民币的微机,制造成本只有三千元,开发成本也大致这么多,而广告和批发零售的耗费和利润占掉了四千元。现在戴尔把开发和制造的成本压到了最低,现在开始打批发和零售商的主意了。戴尔一直坚持直销,它基本上不设批发商,在很长时间里也很少通过零售商分销。戴尔有自己的销售人员负责向企业级的大客户推销产品。而对于个人和小企业,戴尔以前只提供电话订购、邮购和网上订购等购买方式。近几年为了和惠普争夺市场份额,戴尔才通过沃尔玛和Costco等连锁店出售电脑。戴尔的直销方式很简单,它像顾客发放各种配置的计算机的价格表,上面个人计算机的价格比其它品牌计算机的零售价会低很多。很多顾客会被它的价格吸引,打电话或者上网选一个型号并提供给戴尔自己的付款方式就行了,整个过程不需要五分钟时间。戴尔得到的订单,直接通知它在台湾和中国的OEM工厂。工厂每天在生产线生产出订单数量上的计算机,然后按照戴尔提供的地址发货。这些成品计算机根本不需要经过戴尔就到达了顾客手中。这样戴尔将仓储运输的另一半也省掉了,因此戴尔根本不需要有仓库。上面戴尔这种直销方式不仅省去了批发和零售的成本,大大降低了产品的价格,而且在价格上非常透明,也省去了个人消费者讨价还价的麻烦。戴尔开发了一个在线的订购系统,在一头顾客在上面填自己要买的计算机配置和个人信息,另一个自动通知工厂生产和发货,利润就自动流入戴尔公司了。这是一个典型的印钞机式的商业模式。戴尔唯一要做的事就是牢牢控制住订单处理和零售(主要是市场推广)这两个环节。

与戴尔同时开始制造兼容机的公司不计其数。中国的国有计算机公司长城公司几乎与戴尔同时诞生,但是却走了一条自己当时颇为自豪,但现在看是大弯路的所谓“技、工、贸”相结合的道路,现在即使在中国市场也不多见,更不用说在国际上竞争了。长城公司自己开发微机全部软硬件,自己在广东建厂,自己采购元器件,有自己的仓储,最后还发展了一大批批发和零售代理商。大家不难看到,长城公司处处走的是和戴尔公司相反的路线。当长城计算机公司很自豪地拥有了这一切时候,它的资金利用率已经比戴尔低了很多,而它的产品的价格却高了很多。在全球化的今天,这种所谓技工贸结合的模式是无法和戴尔这种用钱直接生钱的印钞机模式相竞争的。

戴尔公司过人之处不在于其技术和市场能力,而在于它将传统的制造业的七个环节简化到两个,这是一个了不起的商业革命。正是靠着这个革命性的商业模式,戴尔才能从众多兼容机厂商中脱颖而出,成为全球主流的微机生产厂商。

结束语

好商业模式对于一个公司的成功是必不可少的,而最好的商业模式就是印钞机式的,它不需要多少人力,一旦运作起来便能自己产生利润,持续发展。

《关于信息系统组织方式的一个提案》的评论与反评

《关于信息系统组织方式的一个提案》的评论与反评

网友Plusy的评论

re: 关于信息系统组织方式的一个提案 2008-05-20 02:04 plusy

首先感谢你分享你的想法。

这里我想补充一些我个人对gmail标签系统的理解。

gmail 的标签系统,个人感觉像一个列表(List),如果不考虑thread和时间排序的因素,更像一个字典,标签是key,而邮件是values. 如果引入权重,则更像队列(Queue), 如果引入树状层级,则相当于重新构建了一个文件系统结构,如果引入图结构,则可以构成复杂连接。从思维的角度来说,标签是给原始的信息标上了索引,即加上了语义,标签链接关系是另一层的语义。权重、父子和多维关联是队列、树和图所表达的基本语义。这里的关键是要让语义来组织信息。

访问频率作为权重、“主标签”作为“相关度”和线信作为聚合引擎,这三种方法都是基于对用户行为的跟踪得来的,可以自动执行,例如gmail的filter。但标签之间的有向关联,别名和文件夹命名则需要用户的干预,机器无法精确理解。比较好的可能是集成人工干预,例如标签的导航系统,内容分析系统,甚至搜索系统,这些都需持续的行为观察和记忆。以上是我对楼主proposal从语义和语法角度的理解。

另外,如果单纯使用语法层面的标签系统,对邮件系统而言,可能有一些困难,以下是我自己遇到的一些问题,供你在设计的时候参考:

(1)标签可能会出现错别字,会导致基于文本比较的关联失败。例如会出现多个别名,”经管“,”尽管“等其实都是想表达“经济与管理”,但用户的疏忽会导致需要一个容错机制,或一个异常的解决方式

(2)维护大量的标签所带来的麻烦是否会抵消它所带来的好处。我们使用文件系统屏蔽了直接维护inode的不便,现在我们用标签来屏蔽文件树的不便。标签所带来的扁平化的好处,可能会图、树的复杂性所消耗,从而带来新的维护负担。例如我自己在gmail中使用了有前缀的标签(使用字母顺表达优先级,共同前缀表达树状关联),但如果标签太多,标签列表就会太长而没办法在一屏显示。

(3)别名机制的冲突问题。这个你在proposal中已经提到了,如果关注度是通过文本方式(搜索和排序)来提取的,则可能会导致自递归循环,实现上比较麻烦。我猜想gmail的filter中无法使用另一个filter大概是为了避免这个问题。

不管我的理解是否贴切,以及几个特例是否有价值,都希望能早日用到你所设想的标签系统。

最后感谢你的proposal再次激发了我自己对gmail标签系统的思考。

我的反评

非常高兴能得到您极为专业的评论!由于成文匆忙,有些细节未能充分展开,旨在抛砖引玉。这不,您这块玉就给引出来了。下面请允许我对您的评论作一个反评论:-)

>>标签是给原始的信息标上了索引,即加上了语义,标签链接关系是另一层的语义。权重、父子和多维关联是队列、树和图所表达的基本语义。这里的关键是要让语义来组织信息。

说得对极了!

>>访问频率作为权重、“主标签”作为“相关度”和线信作为聚合引擎,这三种方法都是基于对用户行为的跟踪得来的,可以自动执行。

1.访问频率基于用户行为,但用户可预先赋予不同的标签以不同的初始值;

2.相关度大多需用户定义,机器难以识别,基于内容并不可靠,何况有些是binary;

3.gmail提供的thread是基于subject的,如果邮件改换subject,则属于不同的conversation。我们需要用户有自定义thread的权力。此外,对非邮件的信息系统(如文件系统),thread是难以由机器生成的。

>>比较好的可能是集成人工干预,例如标签的导航系统,内容分析系统,甚至搜索系统,这些都需持续的行为观察和记忆。

非常正确!一个智能的系统应该对用户行为有一定的预判力,这离不开平时对用户行为的观察和记忆。

>>标签可能会出现错别字,会导致基于文本比较的关联失败。用户的疏忽会导致需要一个容错机制,或一个异常的解决方式

说得没错。不妨与传统的树型结构比较:若用户通过鼠标点击,二者均无错别字问题;若通过文本,二者都可能出错。标签查询可类似文件路径支持通配符,此外若用户输入不存在的标签,可由机器生成一些可能的标签供用户选择。正如用户在google中搜索时键入错别字,google系统会提供一些可能的选择。

>>维护大量的标签所带来的麻烦是否会抵消它所带来的好处。标签所带来的扁平化的好处,可能会被图、树的复杂性所消耗,从而带来新的维护负担。

这正是我想解决的问题。随着文档增多,标签不可避免地增加。如果只是控制标签数量,每个标签下的文档过多也达不到快速检索的目的。请注意该提案主要针对海量文档,如果引入少量的麻烦能解决大量的麻烦,那么这个努力是值得的。此外,该提案是向下兼容的,如果用户的文档不足够多,大可不必引入标签之间的有向关联以及标签的权重等,这就退化为Gmail的标签系统了。就我个人经验而言,虽然Gmail邮件并不太多,仍常常借助搜索内容而不是标签来检索。这是顾忌到Gmail的标签只是一维列表,不愿引入过多标签致使列表过长。搜索内容并没有什么不好,但即使不考虑非文本内容的问题,仍有效率问题。比如,在文件系统中搜索含有某关键词的文件通常费时超过用户的容忍度。

>>例如我自己在gmail中使用了有前缀的标签(使用字母顺表达优先级,共同前缀表达树状关联),但如果标签太多,标签列表就会太长而没办法在一屏显示。

如果标签不以列表而是层级结构来排列的话,正好可解决您的问题——具有相同前缀的标签可以有共同的父标签,可以同时展开或收拢从而节省标签结构的整体高度。

>>别名机制的冲突问题。这个你在proposal中已经提到了,如果关注度是通过文本方式(搜索和排序)来提取的,则可能会导致自递归循环,实现上比较麻烦。我猜想gmail的filter中无法使用另一个filter大概是为了避免这个问题。

没有很明白您的意思。您指的是标签名(而不是别名)的冲突问题吧?其实标签名冲突不是真正的问题,如果冲突正说明它们应该合并,而这在传统的层级结构中是不可能的。如果想进一步区分,再贴另外的标签就是。

关于自递归循环的问题,我不能肯定您的意思。不过防止标签图出现单向回环是必要的。正如前述,本提案中关注度除访问频率外均由用户定义。另外,Gmail的filter虽不能组合使用,但标签可组合过滤。

系统界面设想

最后,简单设想一下提案中的系统界面。它类似windows文件浏览器(explorer),左边(只要靠边即可)是树状标签结构,点击任何标签右边将显示所有包含该标签的信息条。这与explorer有些不同:点击explorer的文件夹右边只显示子文件夹和一级子文件。右边的信息条可进一步按各种准则排序、过滤和搜索。这里暂时没有考虑一个标签有多个父标签的情形。此外,左边的标签除了tree view外,还有list view,正如Gmail的标签列表,但可按重要性、紧急性、常用性等排序。至于别名和thread,可以分别理解为标签和信息条的聚合,用户可点击展开或收拢。

参考链接

关于信息系统组织方式的一个提案

A Proposal on Organization of Information System

分享/保存

Category

Archives