最近一段时间工作重心都将放在Linux下Desktop search(桌面搜索)框架的研发上。因此对desktop search进行了初步的调研。本文将从下面三个方面展开:

  1. Linux桌面环境(Desktop Environment on Linux)
  2. 现有的桌面搜索工具(Desktop Search tools)
  3. 学术界对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自带有文件搜索功能,但是其功能只能完成文件名的检索,不能对文件内容进行深入的挖掘,此外它默认情况下是直接扫描磁盘,没有建立文件索引,文件的搜索效率很低。

我们理想中的桌面搜索应该具有如下功能:

  1. 能够快速有效的建立索引,索引结构要能够充分压缩索引,减少索引的空间占用,同时又需要尽量不影响检索效率
  2. 除了索引文件名,还要能够索引文件内容,特别是包含文本的文件,要实现这一点就要求必须满足3
  3. 必须支持现有的绝大部分(最好是全部)的文件类型,也就是要能够读取这些文件的内容
  4. 搜索框架要具有很好的可拓展性,当出现一个新的或暂不支持的文件类型,可以通过开发和添加插件的方式实现对该文件类型的支持。
  5. 搜索框架要具有学习和预测用户使用习惯的能力,能够不断的优化查询策略来符合特定用户的查询习惯。
  6. ……待补充

我们先来看看当前有哪些流行的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款最流行的工具:分别是BeagleGoogle Desktop SearchTrackerRecoll

Beagle

特点:

  1. 默认索引home目录,可手动修改索引范围
  2. 提供命令行模式
  3. 除了浏览器的历史记录和书签,还能索引emails, IM, RSS readers, address book等等
  4. 内置文件系统监控模块,实时更新索引
  5. 能从以下类型文件中抽取text和meta 
    • Office docs, plain text, HTML, DocBook, image and audio formats…
  6. 能搜索文件内的terms, 不支持PDF
  7. 支持14中搜索主题,以改进搜索质量
    • Pictures, Media, Files, Archives, Mails …
  8. 支持丰富的查询表达式
    • 关键词前加-号,即结果中不出现与该关键字相关的记录
    • 使用OR定义查询
    • 限定搜索结果的时间

缺点:

消耗大量内存

2011年开始停止维护,最终版本3.3.2

 

Google Desktop Search

前文已经介绍过了Windows版本Google Desktop Search, 此处再对它的特点进行一个总结。

特点

  1. 安装后自动开始建索引,不消耗系统资源
  2. 默认支持17种文件类型,其他文件类型需安装插件
  3. 可以检索浏览器历史和email账户
  4. 按两次Ctrl弹出快捷搜索框,实时显示部分搜索结果
  5. 参数的设置以及搜索结果的显示都在浏览器上完成
  6. 对于text和PDF文件,在搜索结果下会给出内容摘录

2011年9月,google业务调整,停止对其支持

Tracker

特点

  1. 不自动索引,不主动监控文件系统变更
  2. 能够配置想要忽略的文件路径或文件名模式
  3. 能够索引emails, 浏览器书签,历史,notes,tasks
  4. 搜索结果会被划分到不同的类别,可以查看指定类别的结果
  5. 单击搜索结果可以查看文件信息
  6. 支持给索引的文件添加标签,便于文件的访问
    • 这一功能非常不可靠,既是它的亮点,也是它最大的败笔,打相同标签的文件经常显示不全。
 

Recoll

特点:

  1. 基于Xapian搜索引擎,需要xapian-core, Qmake和Qt库支持
  2. 不自动索引,点击File>update启动索引
  3. 支持Cron表达式,设置自动索引时间,安排索引计划。
  4. 默认索引home目录
  5. 可设置关键字过滤规则,规则有:
    • All of These, None of These, Any of These…(意思就是说,要检索时要考虑“所有的”、“这几个之外的”、“任意几个”关键字)
  6. 可指定搜索的文件类型
  7. 不主动监控文件系统变更,可在编译时recoll,添加监视模块
  8. 不支持所有文件类型,索引PDF,MP3,RTF, OFFICE.等文件需要安装额外的支持插件。



桌面环境与桌面搜索Desktop Search tools的更多相关文章

  1. linux入门--Linux桌面环境(桌面系统)大比拼[附带优缺点]

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...

  2. 1.10 Linux桌面环境(桌面系统)大比拼[附带优缺点

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...

  3. Linux桌面环境

    早期的 Linux 系统都是不带界面的,只能通过命令来管理,比如运行程序.编辑文档.删除文件等.所以,要想熟练使用 Linux,就必须记忆很多命令. 后来随着 Windows 的普及,计算机界面变得越 ...

  4. Centos安装桌面环境

    刚开始装系统的时候,没有选Gnome或者KDE,现在想装个玩玩. 简单的安装可以参考这个:http://huruxing159.iteye.com/blog/744750 centos安装是是使用li ...

  5. Linux系统之-文件系统,桌面环境

    文件系统 文件类型普通文件,目录文件,连接文件,设备与设备文件,套接字,管道 普通文件(regular file):就是一般存取的文件,由ls -al显示出来的属性中,第一个属性为 [-],例如 [- ...

  6. Ubuntu 12.04 Desktop下vncserver配置:Unity以及Xfce4桌面环境

    将gnome改成xfce xfce-session 即可 2013-01-30 14:45:34|  分类: Ubuntu |  标签:ubuntu12.04  unity  vncserver  s ...

  7. Alpine Linux:如何配置GUI的图形桌面环境:x Desktop Environment

    alpine linux 真是不错.小巧.迅捷! 官方的各个版本的alpine镜像内没有带图形环境的.那我们如何构建自己的桌面图形环境呢? 其实:这个问题,在起官网的wiki内有指南,我们根据那些相关 ...

  8. Arch LInux安装dde(Deepin Desktop Environment 深度桌面环境)

    我一直比较推荐一些Linux新手使用Deepin Linux,因为我认为这种尽量的follow Windows的系统至少对于新手来说是比较的友好的,而且预装了QQ 火狐浏览器中文版,甚至还移植了像36 ...

  9. openEuler网络配置+换源+桌面环境ukui等基本环境部署

    镜像下载.域名解析.时间同步请点击阿里云开源镜像站 1.网络配置 你可以选择查看官方文档进行配置:配置网络 (openeuler.org) 接下来的操作基本都需要root权限,所以直接使用root用户 ...

随机推荐

  1. 新建android系统服务

    一.Android系统服务 Android提供了很多系统服务:如ActivityManger,PowerManger,WindowManger,WifiManger等等. 这些服务都是系统启动开始就一 ...

  2. tableView代理方法的调用时间,(主要是heightForRowAtIndexPath和cellForRowAtIndexPath调用时间)

    最近做一个demo,涉及按照数据分类然后依照分类在 cellForRowAtIndexPath形成不同类型的cell,就是有判断(在viewdidload里面做)和形成(在 cellForRowAtI ...

  3. openssl提取pfx证书密钥对

    刚做银联的项目,对方给了1.pfx和1.cer两个测试文件,总结一下利用这两个文件提取出文本 银联提供两个测试证书  1.pfx 和 1.cer . 其中 pfx证书包含RSA的公钥和密钥;cer证书 ...

  4. (转)C#Interface简介

    接口:描述可属于任何类或结构的一组相关功能,通过interface关键字来声明:接口只包含方法.委托或事件和属性的签名(接口包含的成员).不能包含字段(因为字段是包含数据的).方法的实现是“继承”接口 ...

  5. ASP.NET 无权访问所请求的资源。请考虑对 ASP.NET 请求标识授予访问此资源的权限。

    如题,在编译程序时,没有问题,但是通过iis设置的网站进入时,报如上错误.asp.net有个运行账户,一般情况下iis5为aspnet,iis6为network service,在iis里面确认一下是 ...

  6. Ajax表单提交插件jquery form

    jQuery Form插件是一个优秀的Ajax表单插件,我们可以非常容易的使用它处理表单控件的值,清空和复位表单控件,附件上传,以及完成Ajax表单提交. jQuery Form有两个核心方法ajax ...

  7. C语言初学 数组 打印菱形

    #include<stdio.h> #include<stdlib.h> int main() { int n,i,j; printf("---开始打印符号--\n& ...

  8. Jedis 一

    //连接Jedis public Jedis getJedis(){ Jedis jedis = new Jedis("192.168.1.12",6379); //权限认证 // ...

  9. 转:Node.js异步处理CPU密集型任务的新思路

    原文来自于:http://www.infoq.com/cn/articles/new-idea-of-nodejs-asynchronous-processing-tasks?utm_source=i ...

  10. 利用Asio搭建日志系统

    Asio(http://think-async.com)官方示例中给出了一个比较初步的日志服务,主要代码在basic_logger.hpp.logger_service.hpp.logger_serv ...