最近一段时间工作重心都将放在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. XlFileFormat

    -----转载:http://hi.baidu.com/liu_haitao/item/900ddb38979188c22f8ec26e 18 XlFileFormat.xlAddIn Microso ...

  2. tinkphp URL重写,支持伪静态

    通常的URL里面含有index.php,为了达到更好的SEO效果可能需要去掉URL里面的index.php ,通过URL重写的方式可以达到这种效果,通常需要服务器开启URL_REWRITE模块才能支持 ...

  3. 使用less函数实现不同背景的CSS样式

    今天在公司遇到一个比较特殊的需求,需要完成这样的布局,如下图: 每一个块的背景需要不同,而其他都是相同的,这时候就应该把背景提出来单独写成一个CSS样式类. 那么问题来了,有四个不同的背景需要写4个基 ...

  4. 键盘数字对应的ASCII码(keycode码)

    keycode 1 = 鼠标左键keycode 2 = 鼠标右键keycode 3 = Cancelkeycode 4 = 鼠标中键keycode 8 = BackSpace keycode 9 = ...

  5. Python django admin 替换表单控件

    测试版本: Python 2.7 Django 1.6.2 models.py from django.db import models class Article(models.Model): ti ...

  6. 03_RHEL7.1去掉注册提示

    # rpm –qa|grep subscription-manager 出现类似下面的代码: subscription-manager-firstboot-1.13.22-1.el7.x86_64 s ...

  7. jQuery 的ready事件和 JavaScript 的load事件对比

    为了理解2个事件的异同,先了解一下HTML文档加载顺序 HTML DOM文档加载步骤 HTML DOM文档加载是按顺序执行的,这与浏览器的渲染方式有关,一般浏览器渲染操作的顺序大致按如下几个步骤 1, ...

  8. PHP5的对象复制

    今天用yii开发程序,一个bug改了一晚上,最后发现问题出在了对象复制机制上,PHP5之前的对象复制只需要$object_a = $object_b即可,但PHP5这样得到的是浅复制,及指针指向,并不 ...

  9. 适应手机端的jQuery图片滑块动画

    一款比较特别的jQuery图片滑块插件,它不仅在PC浏览器上可以使用,而且更适合在手机端的网页中使用.这款jQuery插件不仅可以定义图片切换的方向,而且可以即时切换图片切换的动画方式,可以有平移.翻 ...

  10. 一个用python实现的东方时尚(驾校)抢课程序

    2014-12-23 东方时尚约车还要网上选课,资源太紧张了,于是我决定自己写一个抢票程序来帮我刷票. 第一步,抓包.浏览器登陆选课系统,用抓包工具观察网络行为,这里我用的fildder.这里抓包主要 ...