《Nutch0.9入门使用指南》——配置与发布篇

前言:msn空间丢失以及csdn空间丢失,导致很多以前写的文档都不见了~~幸好搜索到了,贴回来留念~~2007年的记忆:)

 

part1:简单配置与发布

注:本文为个人学习后之总结,如有错误和不足,还望各位高手提醒补充,谢谢。QQ:41981172

经过那么多天的学习,个人认为开发搜索的主要流程如下:1.信息抓取 2.分词 3.索引 4分布式

只是个人基于nutch的感觉,不足的地方各位还要速度告诉我,让我可以继续修改~~<2007-07-17>

(一)环境配置及基本数据抓取

Nutch是一个基于Lucene的开源搜索引擎,是一个完整的解决方案。网上有很多相关文档,但实际参考时,总会被一些小的细节弄得错误百出~~被逼无奈,自己重新总结,以备日后参考。

PS:为了那些超级入门的兄弟姐妹,很多过于基础的部分也提了下,表嫌偶啰嗦哦~。

1.      环境及安装:

(1)   环境JDK1.6/TOMCAT6/Cygwin2.510/nutch-0.9

(2)   JDK1.6  http://java.sun.com/javase/downloads/index.jsp

       安装全部下一步,安装好后配置环境变量:

       我的电脑—右键属性—高级—环境变量—新建

       变量名:JAVA_HOME

       变量值:JDK的安装目录,比如C:\Program Files\Java\jdk1.6.0_01

(3)   TOMCAT6  http://tomcat.apache.org/download-60.cgi

       zip版解压缩,目录任意(只要你记得住)

       exe版安装,全下一步,目录同上

       注:写本文件时,本人将tomcat保存在c:/ 命名为tomcat6

       测试:C:\tomcat6\bin\startup.bat,运行正常即ok,如果控制台闪一下就消失了,很有可能你的JAVA_HOME配置有误

(4)   Cygwin2.5  http://www.cygwin.com/

       下载后我选择了online安装,比较慢,但是不容易出错,所有基本都可以下一步

(5)   Nutch0.9  http://www.apache.org/dyn/closer.cgi/lucene/nutch/

       下载后为.tar.gz文件,这个安装比较麻烦,它需要用Cygwin模拟unix环境.

       启动Cygwin

       运行成功后在Cygwin安装目录下生成一个名叫home文件夹

       将tar.gz文件拷贝至home中当前使用用户的文件夹下(文件夹名参考Cygwin控制台)然后在Cygwin控制台输入tar -zxvf nutch-0.9.tar.gz将文件解压缩

       将解压好的nutch-0.9剪切到一个比较好找的位置,比如我放在了d:/下,其实没有什么实际意义.

       测试:Cygwin控制台输入cd d:/nutch-0.9转到nutch的工作目录下键入bin/nutch,如果出现一堆信息,那么,恭喜你,配置ok了

2.      数据的抓取

(1)   建立抓取目录:

       在nutch-0.9目录下建一个叫url的文件/文件夹,名称任意,后缀名有无均可,在该文件中写入需要抓取的网站url(如建立的为文件夹,则在文件夹内建立文件写url) ,例如填写http://www.sina.com.cn/

       注1:这里http://以及后面的"/" 缺一不可,网上资料是说该文件内容和conf/crawl-urlfilter.txt对应,如果不写全的话会抓不全完整路径,至于是否可修改crawl-urlfilter.txt适应url文件,我没有试过,如果有谁试过告诉我声啊。

       注2:有些网站虽然可以用域名访问,但是内页都用ip,不用域名,这种情况建议你写带ip的地址或都写上,避免只抓了首页就抓不下去了,当然,抓什么信息并不是只有url说得算,url是一个列表,crawl-urlfilter.txt中才能决定究竟从这个列表中,怎么抓取,抓取什么。具体它的配置,下边再做讲解。

       注3:如果你想要抓取多个网站,只需要在url中如下填写

       例如:http://www.sina.com.cn/

                   http://www.163.com/

       当然,在crawl-urlfilter.txt也要做相应配置。

(2)   配置crawl-urlfilter.txt:

打开nutch-0.9/conf/crawl-urlfilter.txt,找到这两行
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
红色部分是一个正则,表示搜索的范围
在这里我改为+^http://([a-z0-9]*\.)*sina.com.cn/

表示抓取sina下的所有,这只是个范围,但具体抓它的多少层,由命令决定

注1:这里的配置与url对应,代表从url文件列表中筛选。

注2:大面积抓取时红色部分可写成+http://代表抓所有页

也可写成+^http://([a-z0-9]*\.)*com/代表抓所有.com结尾的页

以上两种抓法,抓取的页包括url中的网址所连接的广告链等。

注3:抓多个站可用以下方式(记得与url文件对应)

# accept hosts in MY.DOMAIN.NAME

+^http://([a-z0-9]*\.)*sina.com.cn/

+^http://([a-z0-9]*\.)*163.com/

按照如上添加,每增加一个url都要重起服务器,为了避免重起,可以写成如下格式,以不变应万变。

+^http://([a-z0-9]*\.)*cn/

+^http://([a-z0-9]*\.)*com/

……

注4:改配置文件还能设置更多相关信息,比如如下,设定那些文件不被抓取

# skip image and other suffixes we can't yet parse

-\.(gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP|rar|RAR|js|JS)$

(3)   修改D:\nutch-0.9\conf\nutch-site.xml,具体为什么加这个我也说不清楚,但尝试了几次,如果不加就会抓不到数据。

<configuration>

<property>

     <name>http.agent.name</name>

     <value>*</value>

</property>

</configuration>

(4)   运行crawl抓取网页

在Cygwin2控制台下输入cd d:nutch-0.9

转到nutch目录下,运行

bin/nutch crawl url -dir mydir -depth 2 -threads 4 -topN 50 >&logs/logs1.log

其中:

-url 就是刚才我们创建的url文件,存放我们要抓取的网址

-dir 指定抓取内容所存放的目录,如上存在mydir中

-threads 指定并发的线程数

-depth 表示以要抓取网站顶级网址为起点的爬行深度

-topN 表示获取前多少条记录,可省

-logs/logs1.log 日志文件的存储地址,如上操作可能造成报无法找到logs错误,没关系,可以手工建立一个logs文件夹,或者干脆不要文件夹直接打名称。省略则将相关运行信息全部在控制台显示。

此处我测试语句委bin/nutch crawl url -dir mydir -depth 3 -threads 4

抓取后,在nutch目录下生成一个mydir文件夹,里面包含如下目录:

①/② crawldb/ linkdb:web link目录,存放url 及url的互联关系,作为爬行与重新爬行的依据,页面默认30天过期(可以在nutch-site.xml中配置,后面会提到)

③ segments:一存放抓取的页面,与上面链接深度depth相关,depth设为2则在segments下生成两个以时间命名的子文件夹,比如” 20061014163012”,打开此文件夹可以看到,它下面还有6个子文件夹,分别是

crawl_generate: names a set of urls to be fetched

crawl_fetch: contains the status of fetching each url

content: contains the content of each url

parse_text: contains the parsed text of each url

parse_data: contains outlinks and metadata parsed from each url

crawl_parse: contains the outlink urls, used to update the crawldb

④ indexes:索引目录,我运行时生成了一个” part-00000”的文件夹,

⑤ index:lucene的索引目录(nutch是基于lucene的,在nutch-0.9\lib下可以看到lucene-core-2.1.0.jar,最后有luke工具的简单使用方法),是indexs里所有index合并后的完整索引,注意索引文件只对页面内容进行索引,没有进行存储,因此查询时要去访问segments目录才能获得页面内容

简单测试,在cygwin中输入”bin/nutch org.apache.nutch.searcher.NutchBean apache”,即调用NutchBean的main方法搜索关键字”apache”,在cygwin可以看到搜索出:Total hits: 29(hits相当于JDBC的results)

注1:如搜索结果始终为0,除因为未上述nutch-0.8.1\conf的nutch-site.xml外,depth如果设为1也可能造成搜索结果为0)

注2:我坐如上测试时,是抓了两个公司的站,然后以icp为关键字查询,成功。但是后来抓新浪,测试中无法查询中文关键字,所以找不到合适关键字测试,结果一直为0。在此提醒各位,及时此处测试抓取数为0,也可以继续下面的步骤,这不只算阶段调试,供各位参考。

3.      Tomcat的发布运行

将nutch-0.9下面有nutch-0.9.war,拷贝到Tomcat\webapps下,可以直接用winrar解压到此目录下,我是用Tomcat启动后解压的,解压文件夹名为:nutch

打开nutch\WEB-INF\classes下nutch-site.xml文件,将

<configuration></configuration>改为

<configuration>

<property>

          <name>searcher.dir</name>
          <value>D:\nutch-0.9\mydir</value>

</property>

</configuration>

注1:<value>中指向生成后的那个文件夹,自己的路径哦

注2:其中我们还可以设置重新爬行时间(页面默认30天过期)

<property>

<name>fetcher.max.crawl.delay</name>

<value>30</value>

<description></description>

</property>

注3:很多参数可以在nutch-0.9\conf下的nutch-default.xml查询,nutch-default.xml中的property配置都带有注释可拷贝测试。

打开http://localhost:8080/nutch 进行查询测试

如结果出现乱码将tomcat\conf下的server.xml中的Connector部分改成如下形式:

(红色部分为添加的)

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"

enableLookups="false"

redirectPort="8443"

acceptCount="100"  

      connectionTimeout="20000"

disableUploadTimeout="true"

      URIEncoding="UTF-8" useBodyEncodingForURI="true" />

4.      关于luke的使用

luke索引察看器,目前版本为0.7.1

下载地址:http://www.getopt.org/luke/ luke-src-0.7.1.zip

我下来的时候直接解压缩,双击运行里面lukeall-0.7.1.jar文件

打开后就有对话框,让你选择路径,你选择索引文件夹下的文件就能打开看了

目前我只研究到这一步,其他的还忘各位加油~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值