Nutch的源码,它的作者和Lucene是一个人,但除了使用基于Lucene的索引和检索模块外,它还包括了crawler、crawl frontier、反向链接数据库、Web检索前端等其它组件。它至少有两大亮点决定了它是目前最好的开源搜索引擎实现,一个是基于Lucene的高效索引和检索功能,另一个是基于Apache的另一开源项目Hadoop实现的类似于Google的分布式文件系统,特别是它大量使用了Google的Map-Reduce思想,从而大大简化了很多功能模块的设计,但也为从来没有接触到Map-Reduce的初学者带来了直线上升的“学习曲线”。可以这样说,没有对Map-Reduce的思想的深刻理解,读懂Nutch源码是非常困难的,所以自己昨天花了半天的时间进行这种必要的准备工作,甚至仔细阅读了Google Lab里的相关论文,深深地为它的巧妙构思而折服。有了Lucene和Map-Reduce这两大块基础知识的准备后,阅读Nutch源码会是一件非常轻松愉快的旅程,它的代码要比以前自己研究过的Lucene容易懂得多,一个很重要的原因是对Map-Reduce的大量使用。另一件引人入胜的事情是一边分步执行代码,一边阅读相关类的源码。今天从下午3点开始研究Nutch,不知不觉就过了吃晚饭的时间,现在已经把主要模块的机理了解清楚,只剩下最后一步的Searcher模块还没看。下面总结一些研究过程中的经验,以备以后自己或相关人员参考:
首先介绍如何下载Nutch源码并在Eclipse里面对其进行Debug:
1。从Nutch主页(http://lucene.apache.org/nutch/)下载到最新的版本(自己下载的是2007年4月2日的0.9版,有68M之大),然后将其解压缩;
2。修改conf/nutch-default.xml文件,最简单的只填写http.agent.name的属性即可;
3。打开Eclipse,创建一个指向Nutch目录下的build.xml的Ant Buildfile的新项目,为其引用的hadoop-0.12.2.jar指定从网上下载的hadoop源文件,这点非常重要,因为项目里引用hadoop包的次数实在是太多了,当然也可以为lucence捆定下载的源码;
4。Nutch的使用方法都集中在一个shell脚本程序里:bin/nutch,要想在Eclipse里像在shell下正常工作,必须在它的启动选项里尽可能进行相近的配置,最主要的是两个,一个是在ClassPath里加入conf和plugin两个子目录,另一个是在VM参数里加入-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log,如果还有问题,参考bin/nutch脚本即可!
按照Nutch网站上的Tutorial初步尝试了一下整个流程,感觉要想在它基础上做出一个功能齐全的中文水平式搜索引擎,还需要在以下几个方面做足功夫:
1。加入中文分词模块,国内开源的基于JAVA的中文分词程序很少见到,可以参考国外最新的开源软件,比如Standford的中文分词器;
2。基于Map-Reduce实现PageRank的计算,这部分功能是Nutch里目前最大的缺憾之一,解决办法可以参考另一个开源搜索引擎Egothor的实现方法,但要基于Map-Reduce来做可能并不容易;
3。因为仅下载中文网页,所以在识别中文字符编码上面还要做些文章,这方面好象Nutch里已经包括了自动识别网页语言的功能;
4。中文网页相对于英文网页来说质量偏低,有更多的嗓音和内容重复的比例(和中文的学术论文有相近之处,),这方面有大量的论文可以参考,但如何在实现效果和复杂度方面进行理想的权衡并不容易;
5。Nutch的Web前端是非常简陋的,这方面可以做很多文章,比如加入Ajax技术丰富用户体验(Relevance Feedback、查询词自动补齐、网页快照自动跳出等)或者加入聚类引擎功能,等等;
6。不仅提供为人类用户的Web检索前端,也可以提供供计算机程序使用的基于Web Service服务。
分享到:
相关推荐
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0
其中内容均为前段时间研究开源搜索引擎时搜集参考的资料,非常齐全包含的内容有: Computing PageRank Using Hadoop.ppt Google的秘密PageRank彻底解说中文版.doc JAVA_Lucene_in_Action教程完整版.doc Java开源搜索...
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。 nutch 1.0
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
Nutch 是一个开源的、Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。
图解搜索引擎nutch配置,自己制作的教程。因为在网上搜索到的教程很多都是粗略,对于初学nutch搜索引擎很难配置好,所以自己亲自打造了一篇图解教程!希望你能够配置成功!
Nutch 初体验 - DBA Notes
开源搜索引擎的比较,Lucene Nutch Heritrix Weblech等
Nutch是一个优秀的开放源代码的Web...分析开源搜索引擎Nutch代码,研究了Nutch的页面排序方法。在Nutch原有的结构基础上提出了3种修改Nutch 排序的方法,对每种方法的实现进行了阐述,最后对这些方法的特点进行了比较
这里是在网上搜到的Nutch配置的博客,比较详细,担心自己以后配置的时候忘了,所以传到csdn,顺便分享给大家。
Nutch开源搜索引擎增量索引recrawl的终极解决办法续
Nutch开源搜索引擎增量索引recrawl的终极解决办法
教你如何利用网上现有的开源工具搭建一个小型的搜索引擎,完成简单的搜索引擎功能,获取感兴趣的信息!
摘要:Nutch是一个优秀的基于Java的开放源码搜索引擎,为了使它能够支持中文搜索,本文在分析了Nutch结构的基础上,采用词表分词技术和前向匹配分词算法对中文信息进行分词,以JavaCC脚本实现上下文相关文法中文分析...
Nutch搜索引擎·Nutch简介及安装(第1期) Nutch搜索引擎·Solr简介及安装(第2期) Nutch搜索引擎·Nutch简单应用(第3期) Nutch搜索引擎·Eclipse开发配置(第4期) Nutch搜索引擎·Nutch浅入分析(第5期)