SearchAll,我搜去

在 信息快速膨胀的今天,搜索引擎已成为我们每天用得最多的工具之一。 然而,在使用搜索引擎的过程中我们会发现, 自己经常使用的搜索引擎搜出来的结果并不总是让我们满意。 在需要更多更全的结果的时候,我们会尝试第二个,甚至第三个。 而对于搞搜索的同事们来说,可能比较各家搜索引擎的结果是日常工作中的重要组成部分, 于是更需要非常快捷和便利的工具。为此,咱们中国 Yahoo 的 EEEE hacking 小组搞了一个很酷的 Firefox 浏览器插件, 叫做 SearchAll , 又名 “我搜去”

安装 SearchAll 的过程非常简单。您只需要先从 这个位置 下载 Firefox 浏览器,然后在 Firefox 中打开下面的页面

https://addons.mozilla.org/zh-TW/firefox/addon/5712

最后点击那个绿色的“安装”按钮就开始安装过程了。

SearchAll 是一款便捷的搜索引擎并行比较工具(side-by-side)。 用户在工具栏上输入查询词,SearchAll 会自动到指定的多家搜索引擎的网站上去查询,并将得到的结果以多种形式呈现给用户。 SearchAll 还会自动为用户,在各家搜索引擎中完成点击“下一页”和“上一页”的动作。

下 面看看“我搜去”能给我们的搜索带来什么样的体验吧: 通过“我搜去“,你可以同时使用三个不同的搜索引擎,只要在搜索框中输入关键词就能同时得到三家搜索引擎的结果。如果你对默认的三家搜索引擎不满意, 你可以在默认的搜索引擎列表中自由选择,目前可选的搜索引擎有包括雅虎,谷歌,百度,淘宝等在内的二十个常用搜索引擎,你可以方便地从中选取。 事实上,``我搜去''的下拉菜单文本框是可编辑的,你可以在文本框中输入你所喜爱的搜索引擎地址。

“我 搜去”内置有通用的数据提取算法,可以从未知的搜索网站页面中提取结果列表。所以即使有一天,Yahoo.cn 的结果页模板 变了,SearchAll 也可以自动学习新的模板。在我们 team 内部,习惯称之为“海维算法”,呵呵。 当然,该模式的挖掘算法在普通的机器上运行有些缓慢,而且还不能处理互联网上 100% 的站点。不过,我们正在对此进行不断的改进.

在本文成稿时,SearchAll 提供了三种展现方式,默认的方式是 “规格化视图”。在此模式下,我们对搜索结果的展现做了优化, 同时自动对结果页中的 URL 进行本地测试,标记好链、慢链和死链,

SearchAll 通过一组可爱的小图标来标记结果项中链接的测试状态。其中绿色的小勾表示好链,红色叉叉表示坏链,带红点的小闹钟表示超时(目前时限设为 5 秒钟), 朵朵暗云表示结果不确定,而黄色的小亮点表示测试正在进行中。由于测试时使用的是 HTTP 协议中的 HEAD 请求,所以测试速度很快。 当然,但有些服务器会拒绝 HEAD,所以难免会造成测试结果的某些失真。

链接本地测试功能让我们的用户对结果的优劣有一个比较直观的认识, 避免了点击无效链接所带来的时间浪费和沮丧情绪 ;)

事实上,早在“易搜时代”,咱们 team 的 jianingy 同学就曾想为易搜添加本地链接测试这个功能, 但受到臭名昭著的``AJAX 踌域''的限制,只得作罢。 而在 SearchAll 的时代,插件中的 JavaScript 代码有足够的特权,所以实现起来非常容易。

用 户提交查询或翻页的时候会发现,动感的小图标替代了搜索引擎返回搜索结果前的“冷漠”,它旋动的图标让你感觉到搜索引擎强劲的“心”。 如果你更习惯于现有搜索引擎的经典展现方式,可以在插件的“原始视图”中得到满足。 该种模式采用你所选取的搜索引擎的原有展现方式,只是将三个搜索引擎整合在一个界面, 方便用户比较各搜索引擎的性能、选取更准确的结果。

值得一提的是,工具在两种模式下都嵌入了计时器,状态栏中显示的时间会让你对各个搜索引擎的性能一目了然!

SearchAll 的用户来自不同的国家,它本身也提供了多语言国际化支持。目前它支持简体中文(zh-CN), 繁体中文(zh-TW), 法语(fr),和西班牙语(es-ES) 的国际化支持。比如,用户若使用的是简体中文版的 Firefox, 那么她看到的 SearchAll 界面也将是简体中文版的。感谢西班牙的 Gregorio Villarrubia 的西班牙文翻译。

对于非中文用户而言,第一次使用 SearchAll 时默认的三家搜索引擎是 yahoo.com , google.com , 和 ask.com . 而中国用户则是 yahoo.cn , google.cn , 和 http://www.baidu.com.

SearchAll 从一开始就定位为开源项目,并以 MIT 协议开放源码。老何和我都太热爱开源事业了,所以特意选择了 MIT 这种 BSD 风格的宽松协议。 本项目的开发过程得到了公司内外许多朋友的帮助,特别是 #extdev IRC 通道上的那些老外们。

对于插件的开发人员而言,我们的一个最强音是:项目的源代码中没有一行XUL/RDF/XML。用户界面完全使用 Perl 语言编写。 我专门为 SearchAll 这个项目开发了一个基于 Perl 的 Firefox 插件开发框架,名为 XUL::App . 有兴趣的读者不妨可以看一看我最近一次演讲的幻灯:

http://agentzh.org/misc/slides/xulapp.ppt

在此,我必须要感谢 Jesse Vincent 的 Jifty 项目 。我们从 Jifty 这个 Web 应用框架中吸取了非常多的营养。

如果你是 Internet Explorer 的忠实用户,别着急,中国雅虎的 PS 部门的工程师们正在着手将 SearchAll 移植到 Internet Explorer,并且已经得到了一个内部原型。

如果你愿意帮助和参与这个项目,请告诉我们,我们会慷慨地赠送 SVN 提交权限。同时,我们会在世界范围内接收反馈和提供帮助! 从下面这个 Subversion 仓库你可以随时得到最新版本的项目源码:

http://svn.openfoundry.org/searchall/trunk

SearchAll,我搜去!