刀枪Blue
来源: BlogBus 原始链接: http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=144627 存档链接: https://web.archive.org/web/20040607204140id_/http://www.blogbus.com:80/blogbus/blog/diary.php?diaryid=144627 作者: zhouxiaohu
刀枪Blue 苦中作乐笑中有泪 <<<不切实际设备博物馆 | 首页 | 旅行的意义>>> 2004-04-18 18:53 ACM Queue有篇文章 A Conversation with Matt Wells ,是Steve Kirsch对 Gigablast 设计师Matt Wells的采访。对咱普通人来说,这个访问中提到了很多原来觉得很神秘,没有机会了解的东西。 采访是因为Gigablast而来的。 Gigablast是什么?--搜索引擎。 对普通用户来讲,知道google和yahoo基本上就完了,internet的老鸟可能还会提到excite等这些。其实搜索引擎技术领域的发展和竞争一直没有停止过,那些浮上水面为普通人知晓的只是一小部分,还有更多潜在下面的。经过残酷的技术和商业规则的考验后,这些原来的潜伏者中的小部分可能有机会成为舞台上的明星。 搜索是个竞争相当激烈的领域,即便现在,台面上的公司也不多:Google,Yahoo(AltaVista/AllTheWeb/Inktomi),LookSmart(Wisenut)和AskJeeves(Teoma)。这是个紧密狭小的圈子,人们相互了解并相互观察。Microsoft的加入亦使局面更加复杂--或者说,这场戏更好看 ;-P 被采访者Matt Wells 1997年开始在Infoseek的搜索项目组工作,3年之后他回到新墨西哥州,创建了Gigablast。他用C++从头开始编写搜索引擎,他的目标是市场上最便宜,最具伸缩性的搜索引擎,能够索引数十亿的Web页面,以非常低廉的价格处理每秒数千次的查询。采访者Steve Kirsch则是Infoseek的创办者,在Infoseek 1997年被Disney收购前一直领导该公司。Kirsch 现在是Propel Software的创办者和CEO。所以,这是一次老板对前员工的采访 ;-)。 几个有意思的的地方(不是全部访问的翻译): 今天的搜索引擎面对着那些问题? 很多。Microsoft的说法是,“搜索”是今天计算机科学中最难的问题。他们不是在哄骗谁或者开玩笑。可以把其分解成3个方面的主要竞争:1. 可伸缩性和性能 2. 质量控制 3. 研究和开发。伸缩性,企业级的引擎必须分布在网络上的多台计算机上,数量可能是数千甚至数万台(这里曾经写的 Google 的力量 也提到这个情况),涉及如此多数据的工作必须关心数据完整性,要实现某种方法抵偿机械故障,大系统上数据错误或者机械故障发生的频率是相当高的。第二,工程师所作的每件事情都必须均一的布置到网络上。在分布式的环境下,最简单的操作,比如添加一条记录到数据库,也复杂了许多,你得识别要存储这条记录的机器,确保它正在运行,把数据尽可能快的传输过去,能优美的处理可能产生的任何错误。最后,海量数据必须能告诉处理以便确保最小查询时间和最大spider rates。 搜索的核心是什么? 任何搜索引擎的核心都是索引index。index的基本数据结构是termlist, posting list, 或者 index list--根据我们所处位置不同,这些术语也有所不同。termlist是对给定词语的一组文档标识列表。比如cat的termlist文档标识包括1,5,7,意思就是cat出现在文档1,5,7中。当由人搜索cat时,我们就能告诉他相关信息了。 扩展一下,如果人们搜索cat dog。我们就必须交叉引用两个termlist来寻找文档标识。想想,如果有2千万的文档包含cat,另有2千万的文档包含dog,咱就有大麻烦了。 处理这个问题最常用的方法是分治divide and conquer。必须把termlist的数据分散到多台机器上。假设我们把引擎分散到20台机器上,每台机器就有1百万的关于cat和dog的文档标识。20台机器可以并行计算他们自己的头10个文档表示,然后把结果发回一台中央服务器进行合并。此外还有更多的捷径可循,比如忽略稀有termlist或者进行短语处理等。忽略停止词比如the,and和a也能节省大量时间。关于title record,每个文档标识都有一个title record,通常包含了标题,URL和web页的摘要信息。今天,大多数搜索引擎的title record中都有完备的,zlib压缩的web页面。 关于第二个基本问题,质量控制。 质量控制是关于如何提高好的结果并过滤坏的结果的。好的算法需要分析web页面的链接结构,根据这个赋予页面一个page score(听起来很像Google的PageRank哟),用page score来度量其包含的术语。此外还要能度量查询词中的术语。比如,如果用the cargo进行搜索,其中的the显然没有cargo重要,那么一个包含了100个the和1个cargo的页面,就不能居于包含了多个cargo的页面之上。过滤坏结果甚至更难,你必须对付各色人等,他们会用成百上千万的页面spam你的引擎。用完全自动化的工具把这些页面从index中去处是不合适的,需要开发能尽可能自动化,但又保留了一定程度人工控制的工具。 重复内容,镜像站点必须被考虑进去。人们可不想看到一堆相同内容。好的搜索引擎必须能侦测景象并进行过滤,过滤不能太紧也不能太松,否则有些重要资料会丢失或者用户又看到相同的内容多次出现。在显示世界中,不一定有内容一字不差的页面,他们可能只是风格有别,这就对搜索引擎的分析和识别算法要求更高了。 关于spam。 电子邮件spam大家都熟悉了,那么搜索引擎spam呢?作为一个动词,spam搜索引擎是一个动作,试图恶意影响或操纵页面评级算法,让一个或一组页面得到更高的评级;作为一个名词,spam就是用上述方法人工提高评级的页面。spam是现在搜索引擎面临的巨大问题。link spamming是众多常用的spam方法之一,通过交换链接来愚弄搜索引擎的链接分析算法。 谈谈Google? google很明智的把焦点放在搜索质量上,而其他人都在忙着做门户忽略的搜索。google的长处在于页面快照,index的尺寸和搜索速度。快照(缓存)的页面让google能生成动态摘要。不过google的搜索质量无论如何不是最好的(强!看来这位Gigablast的头头有绝活),其他引擎还没足够到让用户愿意转换的地步,所以google再凭借其快速的搜索动作更能留住用户了。 google的成功中PageRank算法的因素并不是太大。他们把PageRank吹捧的太高了。早年IBM的CLEVER 项目就提出过。 谈谈Gigablast。 Wells在Gigablast上已经工作了3年多了,它是用C++完全从头编写的。唯一使用的外部工具和库是zlib压缩。Gigablast运行在8台桌面机器上,每个有160G硬盘,2G内存和一个2.6G Intel CPU。包含3亿2千万页面(5TB),每秒处理40个查询,每天spider要漫游800万个页面。现在每天处理50万次查询。 关于Gigablast这个名字。Wells想过很多Power的前缀和后缀名,比如peta,mega,accu,drive,uber等等,可惜几乎所有的组合都已经被人使用了,gigablast.com 当时快到期了,Wells瞄准时机得到了这个名字。 关于搜索的未来。 如果搜索引擎能适当的处理XML,那将对替代SQL起到巨大的作用。如果搜索引擎能对XML进行合适的排序和限制,那会非常有用。例如,对大量的电子商务页面,可以对价格,颜色和其他页面定义的元素进行搜索和排序。 搜索引擎明天的增强仍将基于今天的基础。以后,一个引擎每秒能处理的查询越多,搜索的质量就会越好。 要理解搜索引擎的发展方向就要先理解搜索是什么。搜索,是大脑的基本功能。Internet现在已经非常巨大,Internet上存储的信息基本和一个成人的大脑在一个层次上了,我们需要一些更高层的功能来利用这些信息。我们应该学习大脑使用的协议并把其扩展到Internet的搜索引擎上。搜索引擎和人类意识是紧密并行着的,搜索上的工作让我们探究在智能层次上我们是如何工作的,计算机科学的终极目标是创建像人类那样思考的机器,这台机器的核心会是搜索引擎--就像我们的大脑。 zhou @ 2004-04-18 18:53 返回页首 | 评论 | 引用(0) 评论 发表评论 最新文章 Proceed With Caution 厨师 D DAY 里根 MSN 2.6 - 超线程 Open SUN's Source BugMeNot 中国的土地,人民,时代 在线肖像陈列馆 Links 弱水三千 阿巧 蜻蜓的世界 双子的空间 心的方向 carol 一头熊的碎碎念 小鸡芝芝 isaacmao TOPKU cnblog心得集 Gizmodo Weblogsinc Kuro5hin Engadget AlterSlash Vivisimo CleverCS DeskCity