免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1207 | 回复: 0
打印 上一主题 下一主题

web搜索引擎nutch实践 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-16 21:33 |只看该作者 |倒序浏览

                由于近来在看关于hadoop的相关内容,顺藤摸瓜就发现了这个nutch,其实这已经是一个很古老的项目了,虽然很早以前就知道lucene了,apache下的子项目,而且国内也出版了关于他们的几本书。在此就不多说了,而想不得不提到的就是lucene、nutch、以及hadoop的创始人---Doug Cutting。Lucene 是一个用 Java 开发的开源高性能全文检索工具包,它不是一个完整的应用程序,而是一套简单易用的 API
。在全世界范围内,已有无数的软件系统,Web 网站基于 Lucene 实现了全文检索功能,后来 Doug Cutting 又开创了第一个开源的
Web 搜索引擎(
http://www.nutch.org
)
Nutch, 它在 Lucene 的基础上增加了网络爬虫和一些和 Web 相关的功能,一些解析各类文档格式的插件等,此外,Nutch
中还包含了一个分布式文件系统用于存储数据。从 Nutch 0.8.0 版本之后,Doug Cutting 把 Nutch
中的分布式文件系统以及实现 MapReduce 算法的代码独立出来形成了一个新的开源项 Hadoop。Nutch 也演化为基于 Lucene
全文检索以及 Hadoop 分布式计算平台的一个开源搜索引擎。
本人最喜欢的job flow图:

图片来源:http://www2.ccw.com.cn/06/0647/b/0647b04_4.html
关于nutch的安装和简单的配置,网络上多的是,这里我是为加深自己的记忆,也是为下一步实践hadoop做基础。
环境:
   fc9+java1.6.07+tomcat6.0.28+nutch0.9
以下为配置过程:
1、解压nutch目录为nutch0.9
2、设置环境变量NUTCH_JAVA_HOME=/usr/java/java1.6.07/
3、设置要搜索的站点,此处以redflag-linux.com为例
   lee@python:/data/lee/java-developer$ cd nutch-0.9
   lee@python:/data/lee/java-developer/nutch-0.9$ mkdir urls //建一urls目录,放置url文本文件
   lee@python:/data/lee/java-developer/nutch-0.9$ cat urls/redflag
   http://www.redflag-linux.com
4、编辑nutch-0.9/conf/crawl-urlfilter.txt 文件,将如下一行改写为
+^http://([a-z0-9]*\.)*redflag-linux.com/
文件conf/crawl-urlfilter.txt主要用于限定爬行的URL形式,其中URL的形式使用正则表达式进行描述。
5、编辑文件conf/nutch-site.xml,并且必须至少添加以下内容(可以参考nutch-default.xml):
   
        
             http.agent.name
             xxx.com
             test xxxx.com.
        
6、此时,我们就可以用crawl来将远程的网页抓取到本地了。例如此处命令为:
bin/nutch crawl urls -dir redflag -threads 10 -depth 6 -topN 500
用法如下:
Crawl  [-dir d] [-threads n] [-depth i] [-topN N]
此处可能随着站点的大小有所不同,需要耐心的等待,当看到如下语句时:
.......
merging indexes to: redflag/index
Adding redflag/indexes/part-00000
done merging
crawl finished: redflag
说明抓取完成。
7、配置tomcat,有如下操作:
在$CATALINA/bin/catalina.sh中添加如下一项:
  JAVA_HOME=/usr/java/jdk1.6.0_07/
修改$CATALINA/conf/server.xml文件,以支持中文搜索(红色为添加):
     URIEncoding="UTF-8" useBodyEncodingForURI="true" />
将nutch目录下的nutch-0.9.war复制到$CATALINA/webapp下或是利用tomcat的manger来deploy.
启动tomcat:
lee@python:/data/lee/java-developer/apache-tomcat-6.0.18$ ./bin/startup.sh
Using CATALINA_BASE:   /data/lee/java-developer/apache-tomcat-6.0.18
Using CATALINA_HOME:   /data/lee/java-developer/apache-tomcat-6.0.18
Using CATALINA_TMPDIR: /data/lee/java-developer/apache-tomcat-6.0.18/temp
Using JRE_HOME:       /usr/java/jdk1.6.0_07/
此时还不可以,还需要告诉nutch的jsp文件到哪里去找已经抓取到的文件:如下:
编辑$CATALINA/webapps/nutch-0.9/WEB-INF/classes/nutch-site.xml文件:
   
        searcher.dir
        /data/lee/java-developer/nutch-0.9/redflag
        redflag web search.
   
红色部分即为刚才所抓取到的已经是 nutch索引过的站点内容。
此时,打开你的浏览器,输入http://localhost:8080/nutch-0.9/,会看到如下图所示的内容:

如果你输入关键字搜索那么可能会报缺少include/header.html的错误。那么如果你懂web制作,即兴做一个head.html出来。如果你象我一样,那么就作下面的操作:
$ vi search.jsp
将第151行的内容修改为:"/>
好,我们输入linux看下结果:

ok!
nutch和hadoop的结合,我会在接下来的文章中介绍,这对我来说是一个挑战,也是我给自己新开了一个目录《分布式系统》的开始!
by the way,搜索本身是一门很值得去探索的领域,nutch已经成为yahoo和google对抗的利器,更加深入的内容还请有心人去了解和驾驭它吧!
               
               
               
               
               

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/6303/showart_1316332.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP