基于开源框架的搜索引擎的研究与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
华中科技大学
基于开源框架的搜索引擎
的研究与实现
开题报告
谭望达
4/14/2010
本文讲述了如何在开源程序的基础上搭建自己的一个简单的搜索引擎,使用Lucene,Hadoop和一些机器学习库作为搜索引擎的基础,并且还对Lucene与Hadoop的实现原理进行了比较细致的讲述,希望能够对研究和开发搜索引擎的人起到一定的帮助。
一.选题意义
1.理论意义
从理论的意义上来说,也有很多的地方用到了搜索引擎技术,比如说从语音识别,文本分类,模式识别,都使用到了机器学习,而机器学习的核心就是语料库(corpus),而语料库都是庞大的,一般来说动辄以T级来计算,所以如何从T(千G)级的,也就是以十亿文档级别的数据中提取出想要的数据,是一项挑战,在搜索引擎技术诞生之前是不敢想的。
可以说,搜索引擎技术与机器学习的识别的结合是未来科研的一个很重要的方向。
2.现实意义
从实际出发,搜索引擎生活中作为越来越广泛的使用到的一项基本工具,从生活琐事到专业领域,日常问题可以去百度百科,科研论文可以去Google学术,消费购物可以去阿里巴巴,交友联络可以去校内网,而这些公司与检索相关的内容,都可以说或多或少的应用了很多搜索引擎的技术。
现在还有越来越多的垂直搜索引擎建立起来,也就是利用其他搜索引擎的结果进行二次排序处理,在一个个的更细分的领域中起到了很大的作用。
可以说搜索引擎作为一项互联网的基本技术被广泛的使用。
随着一个一个搜索引擎相关的公司的成功,比如Google这样一个神话般的公司,越来越多的人也关注到了这个领域。
不过想从头自己编写一个搜索引擎可不是容易的事情,而随着越来越多相关的文献的发表和开源社区的建立,创建这样的一个搜索引擎就不再是难事,而实用这些开源的搜索引擎框架,不需要过多的深入技术细节,而更多的精力可以放在想法的实现上。
开源框架的实用一般说来是免费的或者相对商业软件来说是很便宜的,用户可以在资金不太宽裕的时候放心的使用。
另外本文将讨论一下机器学习的一些内容,搜索引擎只是一个“搜索”的实现,而如何更好的把结果展示给用户,如何在数据之上实现更多的特性,就是需要机器学习来进行的,搜索引擎与机器学习是越来越不可分。
本文将讨论一下机器学习的一些基本概念,并且简单的介绍几个开源的机器学习库。
二.论文综述
1.国外有关情况综述
国外在搜索引擎与机器学习领域是远远的走在了国内同行的前面,据可以查
到的资料上来看,最早的搜索引擎有University of McGill师生开发出的Archie,是一个简单的FTP文件搜索引擎,而国外的相关文献也是非常的多。
如果想了解国外的搜索引擎研究最新情况,看看Google的就可以了解到很多的内容。
Google的研究成果:
•超过百万台的机群的管理:
Google所主导的“云计算”也就是利用大量廉价的电脑来组成计算集群,在节约了成本的同时也大大的增加了可扩展性,Google现在的集群可以随意的通过扩展计算机的数量来增强计算与存储的能力,也可以通过扩展计算机的数量来增加数据的安全性,一份数据可以在不同的计算机的硬盘中存多份的景象。
Google的云计算与很多公司的高档服务器相比,节省了约30%的成本,让自己赢在了起跑线上。
•Google文件系统(Google File System,GFS):
Google所创建的GFS隐藏了下层负载均衡,冗余复制等细节,对上层程序提供一个统一的文件系统API接口。
Google根据自己的需求对它进行了特别优化,包括:超大文件的访问,读操作比例远超过写操作,PC机极易发生故障造成节点失效等GFS把文件分成64MB的块(Chunk),分布在集群的机器上,使用Linux 的文件系统存放。
同时每块文件至少有3份以上的冗余,而且是可配置的.中心是一个Master节点(一个集群里面可以有多个Master),根据文件索引,找寻文件块。
•Map Reduce:
Google把大部分的分布式运算都分解成了Map操作与Reduce操作,比如说超大的稀疏矩阵的运算,网页中关键词的统计等等。
Map操作把输入分解为多个部分,让独立的处理器去运行这些内容,然后把结果混合,进行一次Reduce 操作。
由于分布式计算的独立性,Map-Reduce的运行时间基本上是与Map和Reduce的数目呈倒数关系的。
•Big Table:
一个大型的运行于分布式平台上的数据库,就像一个巨大的表格,用来存储结构化的数据库。
说完了这些,我们再来谈谈本文的重点:开源框架的搜索引擎。
Lucene是目前一个很热门的开源搜索引擎的实现,使用Java为开发语言,Java 可移植性强,也拥有了众多的开源产品,我下面将要提到的Hadoop也是采用Java作为开发语言。
Lucene是Apache基金下的一个开源项目。
在Lucene下有Nutch(一个基于Lucene的爬虫实现),PyLucene(基于Lucene 思想的Python实现)等等子项目,而且还在增加中,Lucene现在已经出到了3.0.0版,已经稳定了,而且有着众多的支持者,正在快速的发展。
Hadoop与Lucene一样,同为Apache基金会下的一个开源项目,Hadoop是分布式系统的基础架构实现,创立者是Google的一个核心架构师,并且可以和Lucene很好的结合起来,Hadoop下面有HDFS(GFS的开源实现),MapReduce (Google MapReduce的开源实现),HBase(Google BigTable的开源实现)。
在Hadoop下也有几个子项目,除了上文提到的HDFS,MapReduce,HBase 外,还有Hive(Sql引擎的一个实现)。
Avro(分布式串行化,Distributed Serialization),Chukwa(分布式存储系统的监控系统)。
2.国内有关情况综述
国内目前也有很多公司投入进来研究搜索引擎,或者已经进入了搜索引擎市场,比如说百度,腾讯(soso搜索),网易(有道),阿里巴巴(淘宝搜索),搜狗等公司,而由于这些公司对于中文和中国消费者的了解,这些公司也占领了大部分国内的市场。
3.本人对以上综述的评价
虽然从宏观的市场占有度和满意度来看,国内这些公司可以说还是占有了全球互联网用户中很重要的一部分,不过从技术细节上来看,与Google,Amazon,EMC, 微软,Yahoo! Globle等公司相比,还是有着不小的差距。
特别是对于大量的数据的存储和计算方面还存在着很大的瓶颈。
而且从开放上来说,国内的大部分公司都存在着闭门造车等问题,这样没有交流就没有进步。
三.论文提纲
1.引论
1)问题的提出
2)本文的研究路线
2.搜索引擎的发展及定义
1)搜索引擎的定义
2)搜索引擎的发展
3.国内外研究情况综述
1)国外研究情况综述
2)国内研究情况综述
4.开源搜索引擎框架Lucene
1)项目概述
2)详细原理分析
3)下载,编译,定制一个搜索引擎实例
5.开源分布式系统架构Hadoop
1)项目概述
2)详细原理分析
6.开源机器学习库简介
1)开源文本分类器LibSVM
2)自然语言处理工具OpenNLP
7.结语
四.论文写作进度安排
1.与2010年5月1前完成对论文的开题报告的内容与导师进行沟通和修改,
完成对论文提纲的大致确定。
2.在2010年5月15日前完成参考资料的阅读与开源搜索引擎的一个简单
实现,做一个方便进行研究和写作的搜索引擎Demo
3.在2010年6月1日前完成论文第一稿的写作。
4.之后导师积极讨论,并且在答辩之前一周有时间准备答辩的内容。
五.研究条件和可能存在的问题
1.条件:
台式机与笔记本,Linux系统
参考书籍等资料
2.可能存在的问题
由于开发用的系统配置比较低,再加上缺少输入数据,测试数据的数目可能只是G级的。
而且由于Hadoop的配置非常复杂,对电脑的要求也比较高,可能Hadoop只能在单机搭建一个Demo。
六.预期的结果
1.论文
2.用于研究的简单搜素引擎系统。