分子遗传学家们喜欢把不同物种的DNA序列放到一起,比较它们的相似性,从而作为物种亲缘关系远近的判断依据之一。伴随着"SearchAll,我搜去!"插件0.4.12版的发布,我们现在也可以把各家搜索引擎的"DNA"放到一起,绘出它们之间相同的地方,从而考察它们幕后索引算法的相似度。
那么该如何定义搜索引擎的DNA呢?为简单起见,不妨将它们在某个查询下返回的结果页列表作为DNA,而每一个结果项所对应的网址则是DNA中的基本单元(或者说,核糖核苷)。举例来说,在yahoo.cn中搜索"刘德华",会得到下面的结果列表(第一页):
- 刘德华_影音娱乐_新浪网
- andylau.com
- 刘德华_腾讯娱乐
- 刘德华非官方网站,是FANS...
- 刘德华_腾讯娱乐
- awc618.com
- 刘德华论坛-123木头人...
- 刘德华:他的面孔已不是一种符号_TOM娱乐
- 一个绅士刘德华名副其实的偶像
- 刘德华:光芒万丈的不老情人_网易娱乐频道
每一个结果项的网址(URL)都是全球唯一的标识,而且经常会同时出现在多家搜索引擎的结果页当中,只不过其排序会发生变化。而作为搜索引擎而言,一般会 把它认为比较"好"的结果项放在前面,把"差"一些的结果项放在后面。当然,每一家搜索引擎对"好"的定义不尽相同,所以它们在幕后所使用的结果排序算法 也不尽相同。我们通过比较各家搜索引擎的结果项的排列顺序,可以或多或少地窥探到它们在排序算法上的相似度,甚至它们之间某种内在的"亲缘关系"。
在SearchAll0.4.12当中提供了一个全新的视图来帮助我们进行这种比较,该视图叫做"映射视图"。例如,对于"刘德华"这个查询,我们如果使用Google.cn,Yahoo.cn,和Baidu.com作为当前的三家引擎,会得到下面的视图:
图中三串小球自左向右分别对应Google优化,Yahoo优化,和百度优化所返回的结果列表。每一个结果网址分别对应一只小球;对于完全相同的网址,其小球之间有直线相连,且小球本身也显示为嫩黄色。
从图中不难看出,对于"刘德华"这个查询,Google和Yahoo的排序算法与Yahoo和Baidu之间相比,要更接近一些。当然,仅从单次查 询的结果,就对引擎的亲缘性作出结论,是相当武断的。通过多次不同的查询,我们才能作出比较接近实际的判断。你不妨亲自动手试一下:)
对于天然具有亲缘关系的搜索站点,比如易搜和雅虎全能搜索,则在SearchAll的"映射视图"中显示出近乎一一对应的关系:
图中左边的那串小球是易搜的结果,而右边的则是yahoo.cn全能搜索的。事实上,两个站点在后台使用的是同一套引擎,只不过前台的展现逻辑很不一样而已。类似地,中国的Google优化和美国的Google优化这两个站点在中文查询下,也几乎是一一对应关系:
通过进一步的尝试,我们还会发现,对于图片搜索引擎,即使是热门查询,其关联度也极低。比如在Yahoo.cn和Baidu.com的图片搜索中搜"刘德华",我们也没有看到一条连线。
值得一提的是,这些连线图形都是在用户的客户端直接生成的(感谢Firefox对canvas标签的支持),所以SearchAll插件仍然是0服务器端的应用;)
"映射视图"这个功能的创意其实源自下面这个网站(感谢SDS的青焱的推荐):
http://www.langreiter.com/exec/google-vs-google.html?q=Perl
和SearchAll不同的是,该站点是在自己的服务器上抓取搜索引擎的结果,并生成好Flash图形,最后再传回客户端的。
未来我们可能还会在"映射视图"中顺带着计算"编辑距离"等相关的数值。(感谢复旦大学的laye的提议!)如果你想到了更有趣更另类的比对搜索引擎的方式,请告诉我们。我们EEEE hacking小组会尽最大努力把好的想法在SearchAll的未来版本中变为现实。