技术开发 频道

王咏刚:Linux桌面搜索,让信息无处不在


【IT168独家】
主持人:下面请Google的王咏刚做演讲。


   王咏刚:我来自Google中国,Google在中国有一个Linux的开发团队,这个团队专门做Linux的应用。事实上我们在Linux桌面应用这个层面来讲,无论从国内还是国外,都是在刚刚起步的状态,很多人都希望桌面应用能够迎来一个比较好的未来,能够得到很多Windows用户的青睐,我们觉得Linux桌面系统能够赢得终端用户的前提条件,就是在桌面系统上的应用越来越丰富,Google在中国设立这样一个团队开发Linux应用就是这样一个目的,我们开发的第一个产品实际上把Google在Windows基础上做的,这之后Google会发布更多的Linux平台上的产品。

我今天想针对这样一个平台上展开,我想谈一下Google想做什么,业界做什么,如何让用户更顺利的使用桌面应用。我们先看一下这样一个应用,我们叫桌面搜索,如果我们使用Vista,我们发现这个桌面搜索给我们提供了非常强大的索引功能,这个可以搜索在硬盘上,或者其他设备上的任何一个角落的东西,甚至可以搜索我们浏览过的很多东西。如果大家用过的话它UA是非常非常漂亮,这个搜索功能是非常强大的,那么Linux平台也有类似的产品,但是应该说Linux平台现在这几样产品和产品之间的整合,以及产品和OS的整合,还不像Windows平台那么顺利,我下面介绍一下Linux平台的产品,以及在不同的桌面系统,不同的情况。看一下我们在Linux桌面搜索的领域内要为用户解决什么问题。当然概括起来我想这主要是为用户解决一个问题,其实是获取信息的问题,如果可以获取WEB信息的话,是很难获取硬盘上的信息,很难获得数码相机里的信息,信息往往是以不同的格式存储的,它们的形式也是丰富多彩的,他们的内容也需要组织和管理,这种组织和管理,其实如果我们有这样一种搜索产品,可以平滑的把WEB信息和非WEB信息整合起来,这种产品其实对用户提供的体验,应该是我们所期望的体验。

在Linux平台上实际上如果是程序员的话,都会有使用Local的经验,这就是一个搜索工具,这其实也有维护自己的一套机制,一个存储结构,那么在这个存储结构里面,对磁盘上的文件系统做了简单的索引,在这个支持下提供了相应的搜索的功能,这个功能的基础上我们这个Local,这样一些工具仍然在上面提供了一些比如说安全,比如说用户验证等等这样一些功能,它们这些功能的组建,其实在一个现代的搜索产品里面都会出现。

主流的这个搜索在常用的一些市场上常见的产品,包括去年我们发布的一些产品,简单介绍两种,Track,其实和KTE的集成都很好,这有几个大的特点,它在支持这种一般讲全文搜索的同时,仍然支持W3C提出的RDF的基于结构化的语意的搜索,它支持的是时时的,当你在硬盘上更新任何文件,比如说移动,删除,拷贝文件的时候,它都会时时反映出文件系统的变化,它支持的文件类型和时时的截取文件的缩略图的功能都是支持得相当的不错的,比如说图片的,比如说电影的。那么语言的支持,在不同的桌面的支持上,这也做得相当的不错,它另一个好处,就是基于C的系统,它的效率应该是不错的。
还有就是独立的界面,它做得更好的就是集成Track,那样一个界面用起来更方便,就像我们在Vista里面打开一个搜索,这就可以搜索到WEB上面的一些内容还有Loacl的一些内容。还有一个就是安装非常广泛的系统,这个系统非常大的特点,就是它完全在一个平台上做的,它所提供的支持的文件格式类型,和提供小的文件在我看来是非常长的,而且这个活跃程度相当的好,它的底层的搜索引擎是在(Losi)这样一个版本上实现的搜索。

事实上我刚才讲到一些主流的搜索都已经把自己当成了一部分,也就是说这些搜索都是它提供的一种方式,也就是说当用户使用一个OS的时候,或者当用户使用一个搜索的时候,您所做的并不是把这个当中一个独立的启动起来,您跟这个搜索打交道,就是在桌面面前就要想,今天需要哪些信息,哪些应用不管这些应用是本地的,是WEB的,那么就需要通过一个界面把它调用出来,这就是一个功能,而不是单独的应用程序。也就是说我们需要把这三个无封的集成起来。

就像这个里面应该包括我们实现的非常丰富的一个Setp manew,也包括这些缩略图里面包括我们见到的,和文件管理系统,文件管理器这样一个界面集成的搜索,甚至包括我们在Google上提供的一个界面,这个界面和操作系统集成,就像在Windows一样,只要两个双击就可以调出一个,这个是把外部搜索和本地搜索集成在一起,可以在同一个地方搜索信息这样一个目的。

刚才讲到了桌面和WEB之间的关系,我们不希望让用户觉得WEB信息从WEB来的,桌面信息从桌面来的,我们只要把外部信息和桌面上的信息结合在一起就可以了,我们现在把我们的WEB搜索和桌面搜索统一在一个界面里面,我们可以在一个一模一样的,在Google搜索上面看到的搜索界面和结果界面里面,既看到桌面搜索的结果,和WEB搜索的结果,我们相信这样一种信息的组织管理方式,是用户最容易接受和理解的。

基于这些搜索现在有很多组织,这下面会有一些小组提出一些关于标准化和统一的建议,我介绍其中一种,就是XESAM,它是标准化尝试的缩写,这些标准化的努力,是基于技术环境的考虑。那么这个技术环节来讲从整个流程来看,这分成这么几个阶段,就是如何获取信息,如何组织信息,如何把这些信息根据用户的需求提供给用户,这里面包括获取信息的方式,为了让第三方的应用程序为我们提供信息,为第三方应用程序提供接口,那么同时达到信息之后,我们把这些信息索引,利用这种文字处理和索引技术,把它变成我们的索引器,在索引器之后,我们通过一个服务提供给用户,根据用户的需求反馈给用户结果,在整个的流程里面,我们很多地方需要统一,需要标准化,也就是不同的产品如果在一个OS上面安装了,用户会觉得是很混乱的状态,如果我们在获取信息这方面得到标准化的信息定义,比如说我们同时去描述硬盘上的所有MP3文件,这时候我们如何描述哪种MP3里面哪些需要被索引,哪些不需要被索引,那么这是一种格式化,或者是统一。那么如何在硬盘上以什么样的方式存储,以什么样的方式索引,这仍然是统一的格式,这些数据,这些索引,甚至是这些测试的结果,能不能在不同的系统之间做交换,如何和OS连接,如何和基于WEB的应用做连接,这都是我们做标准化的时候需要考虑的问题,现在正在处于这样一个状态,可以说是标准,或者说是一种努力,它已经为我们提出了,刚才我说的几个环节,都会有这种覆盖的一些标准。

他希望我们不同的产品都会基于一个接口,大家知道在Linux平台上来,现在基础的应用越来越多了,我们知道Linux平台上出现很多不同的应用,如果拿它来做搜索和OS,或者和其他应用程序之间通讯的接口来说,现在看来还是一个不错的选择。
另外一个就是我们通过一种方式表达用户的需求,现在有一个定义,这个定义基本上基于一个标准。那么事实上我们还有一个跟基本的,用户要查什么东西这样一个标准,实际上这个标准所含概的,就是在Google搜索上面的搜索框输入的内容,如果大家常用Google搜索里面可以知道可以写不同的搜索。那么基于Google这样一个成功经验,我们这样一个相关的组织,它所定义的搜索方式,其实是完全兼容的。

对所有的测试都一样了,就是如何描述信息,实际上我们可以把信息看作自由的文本,和自由的数据流,领导经验我们可以把信息看成描述这个数据格式,或者是描述数据属性的,那么如何组织呢,比如说如何描述音乐的,如何描述电影的,那么这之前有很多不同的组织,不同的项目,做了相关的努力,那么在这个领域相对的问题不是那么一样,就是说你在描述的时候还要注意,我们在搜索领域,到底那些是搜索真正关心的,那些是用户完全不会去搜索的,这样就会对真正关心的做一个清晰的有利于搜索的界定,有利于反馈结果的界定,这种领域我们不同的组织也提出了不同的标准。

刚才介绍一下其他相关的产品,现在比较流行的,和我们不同的组织对搜索这个领域做的标准化的领域。简单节杀一下Google产品的样子和技术的架构,我们做这个产品实际上也做了大概有9个,10个月的时间,这期间我们遇到了很多问题,我们会用多很多Google内部自己的技术,比如说这样一个桌面搜索,我们看到弹出的菜单里面还有包括MAP搜索,还有NEWS搜索,那么可以基于一个界面让用户访问这个是Google桌面搜索比较大的特点,就是它可以通过统一的接口和界面把不同的搜索结合得比较好。

Google桌面搜索其他的一些包括我们的Gmail,包括不同的文件类型,包括不同的数据来源都可以比较好的支持,有一个比较重要的特点,就是Google桌面搜索可以支持同一个文件不同的版本,也就是说当每一次编辑一个文件的时候,会把前后老文件和新文件不同记录下来,也许你希望得到一个老的版本,那么在Google桌面搜索里面得到一个老的版本,而在文件系统里面可能把老的版本已经删掉了。

Google桌面搜索在发布的时候,就会有一个非常好的多元的支持,因为首先它也是中国团队开发的,这里面内制了一个中日韩的处理模块,包括中日韩的分词模块,它在桌面搜索领域是功能非常强的模块,这个里面有中文,日文,韩文,我们第一个版本里面支持11种语言,对这些语言的支持都是很好的。

Google桌面搜索其他特点,包括核心的搜索这是Google内部,Google不是一个开放的产品,其实有一部分原因就是它的原代码是Google自己的,这个是速度,性能,查询的准确度来讲,我们认为都是桌面搜索产品里面非常好的。

重点可以看一下Google桌面搜索内部的一些技术的框架,或者体系,然后看一下在实现Google桌面搜索遇到的问题,以及我们的解决方案。实际上对于一个完整的桌面搜索产品来讲,我刚才给大家看了一个功能流程的图片,这个图片就展示了自己产品的功能模块的划分。首先最大的一个蓝色的框,就是我们处理所有信息员来的,不管是文本还是非文本的文件,我们都要做一个索引,这个细节就不谈了,这里面有Google的很多经验。那么这些怎么样存到Linux硬盘里面,这也是技术上非常有挑战的地方,我们如何用操作起来比较快速,同时又对这种用户的硬盘,包括对IO的消耗,包括对CPU的消耗比较低的存储结构,那么事实上我们一些大家可以想道的一些通用的存储结构,比如说基于B TREE的文件结构,那么在这样一个里面都会有使用。

它的上层是(Crold),它就是一个时时的和非时时集成的文本,以及第三方的应用程序做出来,比如说这里面的Email,网页都可以通过插件把他们的内容给我们,我们收到所有的信息之后,就通过这个做一个索引存储起来,通过如何解析用户,通过一个Local的界面,实际上在技术上来来讲,我们运行了一个非常小的Local的WEB Server,这里面我们做了一个集成的技术,就是把WEB集成的结果的和BY Setp做一起。

这里面也用到了一些包括像一些现在这两年已经开始流行起来的公用的桌面的平台或者工具。这里面有一个非常重要的模块,这样一个产品在工作的时候是不断的索引用户的内容,不断的做一些跟文本有关,或者跟索引有关的运算,那么做这些运算的时候,有时候是CPU消耗比较大,或者是IO消耗比较大的,因为你是在桌面系统上为用户使用,那么用户普通的日常的工作,比如说他做一些字处理的工作就没有办法进行,大多数这种产品都会有一个模块,它会不断的监视用户在前的应用程序是否处于一个比较忙,或者用户当前是否不断的用键盘和鼠标做操作的状态,如果是,它就会让后台自己的一个,如果正在工作程序先停一下,等用户忙过之后再相关的索引,或者是格式转换工作。

我们的一些跟桌面索引有关的技术点,我简单的提一些吧,我们希望在硬盘上抓取文件的时候,我们会遇到一些问题,比如说很多的桌面索引在Linux上的实现,都会做一个时时的索引的接口,当有任何文件的添加,或者修改操作发生的时候,会告诉我们需要做一个时时的文件处理,但是这时候经常遇到一些逻辑上的困难,比如说当用户把一个非常大文件夹移动到一个位置的时候,比如说这个文件夹里面有几万个文件,这几万个文件在本地索引里面的更新会有非常大的困难,当用户很简单做一个操作的时候,那么我们的桌面索引会有非常大的更新量,这个怎么样在很快的时间内给用户一个很好的反馈,比如说用户很好的搜索到,这对我们内部管理,在响应事件还有内部管理中间尽快处理的事,这方面我们实际上做了相当多的工作,包括我们用一些机制,在里面完成一些时时的相应。

另外还有一个安全的问题,它是不是能够在一个机器上其他用户的一些文件,它能看到多少文件,它能看到多少,应该索引多少,不应该索引多少,这都是事先有一些规则定义,这些规则同时必须有一些模块来做安全性的管理,这是我们做桌面索引应用的时候必须考虑的问题。

实际上在做桌面索引的时候,和我们Google在做WEB索引的时候,有很大的不同,就是索引搜索用的资源就是一台计算机,Google在WEB索引的时候,可以用非常大的计算机的集群,Google数据中心有非常多的机器,那么用户可以在很多的机器上同时运营得到结果。WEB索引是非常大的分布式的计算,那么在这样的计算下面Google用起来非常的方便,那么在单机的时候,有一些工作必须要做单机的适应,那么在单机的环境下,我们必须用单机的资源,不能用到百分之百的资源,我们如何在单机的资源里面,如何把用户的数据用起来,要把这些数据反映出来,这里面有不同的问题。比如说如何在数据来的时候,做编码的侦测,Linux在编码上面可能是一个标准定义得非常非常庞大,而且从实现来讲也非常复杂的一个系统,就是Linux从文件系统到文件系统里面每个文件的内容,到文件内容的编码,其实大家可以遇到,同一个文件系统里面可以遇到不同编码的文件,不同编码文件之间可能有规律,但是实际上是规律难找到,那么如何子的侦测每一个文件,比如说它是一国标的文件,还是UTF的文件,如何正确的做一个转码,索引出来,如何发现是中文还是韩文,针对中文要做分词和处理,那么这些技术在WEB索引里面都是统一处理的。

如果在桌面索引里面,我们可以把一个文件内容,当我们针对一个文件进行分词,或者进行编码检测的时候,我们可以把这个送给庞大的电脑,我们后台可以存储海量的参考数据资源。我们实际上在做相关的检测的时候,也是花比较大的经历,如何让模块小型化,如何在Linux系统上运行得更稳定。

在相关的这些安全性方面,在我们把WEB搜索结果和桌面搜索结果集成在一起的话,也遇到一些问题,当我们在一个WEB页面里面集成不同内容的时候,一个内容来自本地的,一个内容来自远程的,那么这两部分来源内容如何混淆在同一个浏览器的页面里面的话,经常发生一个安全问题,大家应该想到,应该是中文叫做跨站点脚本攻击,那么如何保证安全的情况下,把这个不同来源的WEB内容收集起来,在Local搜索方面做了很多的工作,我们做了各种输入和输出的验证,来保证每一个输入和输出都是合法和安全的。

我想未来桌面搜索的发展可能会朝着这几个方向发展,第一会更好的和操作系统如为一体,比如说我们在Vista下面可以用内嵌入的,但是不管用哪一种都会发现都可以通过不同的接口,通过不同的方式调用这种搜索的功能。同时我们也会给这个不同的应用程序,以API的方式开放不同的接口,让不同的应用程序,比如说你有一个照片管理程序,同时也想搜索机器上面的比如说存放的文本的时候,它其实不需要自己做什么工作,如果这个平台,如果这个OF有这个功能的时候,它只要调用一些API,就可以获得很丰富的内容。

在不同的电脑和不同网络之间的搜索,Google在Windows上实现了这个功能,但是在Linux上没有实现这样功能,也就是当家里的电脑有不同的环境上的时候,就实现了小型电脑存储的功能,这个有更多的安全问题和技术问题需要考虑,其他的包括比如说我们提供更好的可定制的功能,和可定制的界面等等,如果大家有兴趣的话,我们可以接着讨论。我们可以用桌面搜索来丰富终端用户体验,使更多的用户拿Linux做一个桌面,而不是拿Windows作为他们的工作环境,我的讲解就到这里,谢谢大家。

0
相关文章