最近一段时间工作重心都将放在Linux下Desktop search(桌面搜索)框架的研发上。因此对desktop search进行了初步的调研。本文将从下面三个方面展开:
- Linux桌面环境(Desktop Environment on Linux)
- 现有的桌面搜索工具(Desktop Search tools)
- 学术界对Desktop search的研究情况
Linux桌面环境(Desktop Environment on Linux)
首先来说说桌面环境。所谓桌面环境,就是在原来命令行时代的OS外层追加了一层可视化的窗口管理程序,将之前只能使用命令方式进行的文件管理,进程管理,软件管理,硬件管理,计算机配置管理等等工作都转变为界面更加友好的可视化工作方式。桌面环境概念其实是随着桌面操作系统的诞生而产生的。在桌面OS出现以前最有名的OS是MS的DOS。随着苹果发布Macintosh,带有下拉式菜单、桌面图标、能够进行拖曳式操作与双点击的Mac OS进入世人的视野,这是图形化桌面操作系统的首次亮相。紧随其后,MS发布了Windows 1.0,桌面操作系统开始风靡世界。我们将Windows和Mac OS归为一类,他俩作为主流的商业桌面操作系统,几乎垄断了桌面操作系统市场。另一类是Linux桌面操作系统。Linux的发行版本是越来越多,安装在这些发行版本上桌面环境继承了*软件的灵魂,可谓百花齐放,百家争鸣。报的上名号的有GNOME、KDE、Unity、Xfce、MATE、LXDE、Cinnamon、ROX、Enlightenment等等。其中GNOME,KDE稳坐头两把交椅。
GNOME作为最流行的Desk Environment,其2.X系列一直是大多数Linux发行版的默认桌面环境,但是进入3.0时代后,GNOME似乎有些走下坡,一些发行版开始从GNOME抽身,有说法说3.0改的简洁的有点过分,默认连个任务栏也没有。在Ubuntu10.10之前GNOME一直是默认的桌面环境,但之后开始改用自家开发的Unity,也就有了我们现在看到的Ubuntu。如果稍加了解,就会发现其实Unity是基于GNOME开发的。GNOME除了提供功能强大桌面环境以外,还为开发者准备了一个有强大支持的开发平台,帮助开发整合于用户桌面的开发程序。
KDE也是功能非常强大桌面环境,神似Windows,其包含了大量的应用程序,极大的提升了自身的可用性和竞争力。Fedora默认支持GNOME和KDE,Fedora18开始加入了对MATE(GNOME2的一个分支)的支持。GNOME和KDE这两个家伙个头大,能耐也大,要什么功能有什么功能,但是这要造成他俩需要消耗大量的资源。
Xfce, LXDE以及搭载在8.12发布的Elementary OS Luna上的Pantheon(这款UI做的挺帅的,可以关注下)等都是轻量级的桌面环境,它们通常都是为低能耗的机器设计,比如移动设备之类的,它们占用的资源也要少很多。
现有的桌面搜索工具(Desktop Search tools)
说完Desktop environment,我们进入正题。那么为什么出现桌面搜索这么一种需求呢。我们知道搜索概念的出现是因为数据的膨胀,人为检索难度增大。研发一种自动化检索机制是人心所向、众望所归。对于Web搜索来说,数据指的是整个互联网上的海量网页;对于桌面搜索来说,数据指的文件系统中的所有文件。随着硬盘存储容量的提升,单机上存储的数据越来越多,找文件的难度显然越来越大,这就是桌面搜索出现的动机。
当前Window自带有文件搜索功能,但是其功能只能完成文件名的检索,不能对文件内容进行深入的挖掘,此外它默认情况下是直接扫描磁盘,没有建立文件索引,文件的搜索效率很低。
我们理想中的桌面搜索应该具有如下功能:
- 能够快速有效的建立索引,索引结构要能够充分压缩索引,减少索引的空间占用,同时又需要尽量不影响检索效率
- 除了索引文件名,还要能够索引文件内容,特别是包含文本的文件,要实现这一点就要求必须满足3
- 必须支持现有的绝大部分(最好是全部)的文件类型,也就是要能够读取这些文件的内容
- 搜索框架要具有很好的可拓展性,当出现一个新的或暂不支持的文件类型,可以通过开发和添加插件的方式实现对该文件类型的支持。
- 搜索框架要具有学习和预测用户使用习惯的能力,能够不断的优化查询策略来符合特定用户的查询习惯。
- ……待补充
我们先来看看当前有哪些流行的Desktop search东东。首先我们挖一下在Windows下的宝贝。这里我们介绍4款,分别是:
Copernic Desktop Search
它是由老牌的集成搜索公司Copernic开发的桌面搜索工具。Copernic Desktop Search是最早的桌面搜索工具之一,也是Windows平台上评价最高的桌面搜索产品。它在安装后自动为全盘建立索引,并且实时监控文件系统的变更来更新索引;它能够检索文件、文件夹以及文件内容;它支持Word, Excel, PowerPoint, PDF, HTML, Word Perfect, text, ZIP文件, Outlook、Outlook Express、Eudora Mozilla Thunderbird这三种邮件客户端中的邮件和附件 以及超过150种其他文件格式,如MP3, JPG, WAV, MPEG。
Locate32
这款不是很有名。它跟其他desktop search有一个本质的不同:它的索引是存放在数据库中。它使用数据库来存储目录结构信息,然后用于查询。
Google Desktop Search
大名鼎鼎的Google Desktop Search是以侧边栏/小工具的形式呈现的,最新版的Google Desktop Search只要按两下Ctrl键就会弹极为简洁的搜索框。它不仅能够检索硬盘上的文件,还能搜索你的浏览器历史、GMAIL账户、Outloolk等等功能非常强大。它的所有配置、搜索结果都是以网页的形式呈现,必须通过浏览器来查看和设置。除了Windows版,它还支持MAC和Linux。下文也会提到。遗憾的是,google在2011年进行业务调整,停掉了Google Desktop Search项目。
Everything
Everything是一款非常轻量的软件,他非常的小巧且提供绿色版下载。它能够快速的索引整个硬盘并提供可靠的文件检索。它只能支持NFS文件系统,只能检索文件名和目录名,不能检索文件内容。
在Linux下,我们挑选了4款最流行的工具:分别是Beagle、Google Desktop Search、Tracker、Recoll。
Beagle
特点:
- 默认索引home目录,可手动修改索引范围
- 提供命令行模式
- 除了浏览器的历史记录和书签,还能索引emails, IM, RSS readers, address book等等
- 内置文件系统监控模块,实时更新索引
- 能从以下类型文件中抽取text和meta
- Office docs, plain text, HTML, DocBook, image and audio formats…
- 能搜索文件内的terms, 不支持PDF
- 支持14中搜索主题,以改进搜索质量
- Pictures, Media, Files, Archives, Mails …
- 支持丰富的查询表达式
- 关键词前加-号,即结果中不出现与该关键字相关的记录
- 使用OR定义查询
- 限定搜索结果的时间
- …
缺点:
消耗大量内存
2011年开始停止维护,最终版本3.3.2
Google Desktop Search
前文已经介绍过了Windows版本Google Desktop Search, 此处再对它的特点进行一个总结。
特点
- 安装后自动开始建索引,不消耗系统资源
- 默认支持17种文件类型,其他文件类型需安装插件
- 可以检索浏览器历史和email账户
- 按两次Ctrl弹出快捷搜索框,实时显示部分搜索结果
- 参数的设置以及搜索结果的显示都在浏览器上完成
- 对于text和PDF文件,在搜索结果下会给出内容摘录
2011年9月,google业务调整,停止对其支持
Tracker
特点
- 不自动索引,不主动监控文件系统变更
- 能够配置想要忽略的文件路径或文件名模式
- 能够索引emails, 浏览器书签,历史,notes,tasks
- 搜索结果会被划分到不同的类别,可以查看指定类别的结果
- 单击搜索结果可以查看文件信息
- 支持给索引的文件添加标签,便于文件的访问
- 这一功能非常不可靠,既是它的亮点,也是它最大的败笔,打相同标签的文件经常显示不全。
Recoll
特点:
- 基于Xapian搜索引擎,需要xapian-core, Qmake和Qt库支持
- 不自动索引,点击File>update启动索引
- 支持Cron表达式,设置自动索引时间,安排索引计划。
- 默认索引home目录
- 可设置关键字过滤规则,规则有:
- All of These, None of These, Any of These…(意思就是说,要检索时要考虑“所有的”、“这几个之外的”、“任意几个”关键字)
- 可指定搜索的文件类型
- 不主动监控文件系统变更,可在编译时recoll,添加监视模块
- 不支持所有文件类型,索引PDF,MP3,RTF, OFFICE.等文件需要安装额外的支持插件。