windows下nutch的安装
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Nutch入门
1准备
将中文的API文档配置到tomcat,可以通过http://127.0.0.1/api/访问到api的主页即可2下载,安装cygwin
官方主页:/
2.1 选择install from local directory
2.2 安装到的目录
2.3 选择已经下载的安装文件所在的目录
2.4 选择全部安装(install)
……
2.5 需要等很长时间……
2.6 设置环境变量
NUTCH_JA V A_HOME C:\jdk
3抓取
3.1 配置抓取的起始网站地址
3.2 修改nutch-site.xml
解释:
Nutch中的所有配置文件都放置在总目录下的conf子文件夹中,最基本的配置文件是conf/nutch-default.xml。
这个文件中定义了Nutch的所有必要设置以及一些默认值,它是不可以被修改的。
如果你想进行个性化设置,你需要在conf/nutch-site.xml进行设置,它会对默认设置进行屏蔽。
Nutch考虑了其可扩展性,你可以自定义插件plugins来定制自己的服务,一些plugins 存放于plugins子文件夹。
Nutch的网页解析与索引功能是通过插件形式进行实现的,例如,对HTML文件的解析与索引是通过HTML document parsing plugin, parse-html实现的。
所以你完全可以自定义各种解析插件然后对配置文件进行修改,然后你就可以抓取并索引各种类型的文件了。
3.3 配置crawl-urlfilter.txt
解释如下:
●Nutch 的爬虫有两种方式
⏹爬行企业内部网(Intranet crawling:针对少数网站进行,用crawl 命令。
⏹爬行整个互联网:使用低层的inject, generate, fetch 和updatedb 命令,具有更强
的可控制性。
●举例
⏹+^http://([a-z0-9]*\.)*/
⏹+^http://(\.*)*
◆句点符号匹配所有字符,包括空格、Tab字符甚至换行符:
◆IP地址中的句点字符必须进行转义处理(前面加上“\”),因为IP地址中的句
点具有它本来的含义,而不是采用正则表达式语法中的特殊含义。
3.4 抓取
双击Cygwin快捷方式,启动Cygwin
或者
●urls就是刚才我们创建的url文件,存放我们要抓取的网址
●-dir craw 指定抓取内容所存放的目录,如上存在mydir中
●-threads 4 指定并发的线程数
●-depth 3 表示以要抓取网站顶级网址为起点的爬行深度
●-topN 50 表示获取前多少条记录,可省
●>& crawl.log 日志文件的存储地址,省略则将相关运行信息全部在控制台显示。
3.5 观察抓取后生成的目录
抓取后,在nutch目录下生成一个crawl文件夹,里面包含如下目录:
4简单测试
在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,也可以继续下面的步骤,这不只算阶段调试,供各位参考。
5配置tomcat
nutch-0.9.war拷贝到C:\tomcat\webapps
启动tomcat
修改C:\tomcat\webapps\nutch-0.9\WEB-INF\classes\nutch-site.xml
在这里value标签就是指定你搜索的目录,这个目录,也就是开头你抓取后存放抓取内容及
6中文乱码
修改C:\tomcat\conf下的server.xml文件,找到Connector部分, 添加如下内容目的是为了解决汉字编码问题,以免在进行中文搜索时,出现乱码。
7运行网站
访问:http://127.0.0.1/nutch-0.9/
8nutch-default.xml配置参数解释(部分)
8.1 http.max.delays
爬虫的网络延时线程等待时间,以秒计时,默认的配时间是3秒,视网络状况而定。
如果
在爬虫运行的时候发现服务器返回了主机忙消息,则等待时间由fetcher.server.delay 决定,所以在网络状况不太好的情况下fetcher.server.delay 也设置稍大一点的值较好,此外还有一个http.timeout 也和网络状况有关系。
8.2 http.content.limit
描述爬虫抓取的文档内容长度的配置项。
原来的值是65536 ,也就是说抓取到的一个文档截取65KB左右,超过部分将被忽略,对于抓取特定内容的搜索引擎需要修改此项,比如XML文档。
8.3 db.default.fetch.interval
这个功能对定期自动爬取需求的开发有用,设置多少天重新爬一个页面。
8.4 fetcher.server.delay
8.5 fetcher.threads.fetch
最大抓取线程数量
8.6 fetcher.threads.per.host
8.7 fetcher.verbose
如果是true, 打印出更多详细信息
8.8 parser.threads.parse
解析爬取到的文档线程数,和爬虫线程对应,因为爬虫主要的处理类是有很多地方使用到了同步,所以此配置项和爬虫线程保持一直对处理有好处。
8.9
分布式文件系统使用的配置项,默认的是 local 表示使用本地文件系统,如果使用host:port 的形式表示使用分布式文件系统NDFS,此处的文件系统地址是nameserver ,也就是通过bin/nutch namenode xxxx启动的主机地址和端口号。
8.10 .dir
分布式文件系统namenode 使用的存放数据的目录,Namenode 会使用此项,另外在启动namenode 或datanode的时候也可以加上路径作为参数也可以生效。
8.11 ndfs.data.dir
0.9版本nutch-default.xml无此参数
分布式文件系统ndatanode 使用的存放数据的目录,datanode 会使用此项,另外在启动datanode的时候也可以加上路径作为参数也可以生效。
8.12 indexer.max.tokens
这个配置项的功能是限制索引的时候每个文档的单个字段最大10000个Tokens,也就是说在采用默认的一元分词的情况下,最大的文档字数限制是10000,如果采用其他中文非一元分词系统,则索引的单个文档单个字段将会超过10000个,对内存有影响。
8.13 indexer.mergeFactor
合并因子,在建立索引的时候用到,表示索引多少个文档的时候回写到存储设备。
8.14 indexer.minMergeDocs
这个配置项对内存影响巨大,功能是在建立索引的时候最小的合并文档数量,这个值设置太小一个会影响索引速度,另外一个在需要索引的文档数量很大的时候会出现Too Many Open files 的错误,这个时候需要调整此配置项,有试验表明1000的时候会有比较快的索引速度,但我把此项值调整到10000 ,索引的时候最高内存占用到1.8G,索引创建速度是25page/sec ,并且多次索引的时候有一个衰减。
不过对查询的相应时间有很大提升,如果内存足够的话修改较大的值比较好。
8.15 indexer.maxMergeDocs
这个好像不需要设置,因为默认的值是Integer.MAX_V ALUE ,不会比这个更大了。
8.16 searcher.summary.context
这个比较有用,在前面的文章里有介绍。
8.17 searcher.summary.length
在前面的文章里也有介绍。
8.18 plugin.folders
配置插件功能的配置项,plugin.folders制定插件加载路径
8.19 plugin.includes
配置插件功能的配置项,plugin.includes表示需要加载的插件列表
8.20 parser.character.encoding.default
解析文档的时候使用的默认编码windows-1252 好像比较少用到的一种编码,我不太熟悉。
8.21 parser.html.impl
制定解析HTML文档的时候使用的解析器,NEKO功能比较强大,后面会有专门的文章介绍Neko 从HTML到TEXT以及html片断的解析等功能做介绍。
8.22 extension.clustering.hits-to-cluster
8.23 extension.ontology.extension-name
人工智能,这个功能在我以后的开发过程中会逐步深入,等我有相关的经验以后在给大家介绍。
◎_◎
8.24 query.url.boost
<property>
<name>query.url.boost</name>
<value>4.0</value>
<description> Used as a boost for url field in Lucene query.
</description>
</property>
<property>
<name>query.anchor.boost</name>
<value>2.0</value>
<description> Used as a boost for anchor field in Lucene query.
</description>
</property>
<property>
<name>query.title.boost</name>
<value>1.5</value>
<description> Used as a boost for title field in Lucene query.
</description>
</property>
<property>
<name>query.host.boost</name>
<value>2.0</value>
<description> Used as a boost for host field in Lucene query.
</description>
以上的几个关于搜索结果排序的分值计算因子在以后的搜索结果排序会专门做介绍,这几个项对垂直搜索的用处不太大。
8.25 lang.analyze.max.length
和语言有关系,分词的时候会用到,不过我没用过这个配置项。
还有几个重要的配置项在nutch-site.xml里面配置。
8.26 searcher.dir
可以有两种方式,如果指向的目录下面有search-servers.txt 文件,那么优先处理
search-servers.txt文件中的内容,并解析其中复合hostname port格式的内容(即分布式查询请求),解析到后就想该服务器发送查询请求,如果没有则查找segements 目录,segments 是本地索引文件。
如果两个都没有找到,她就要报错了。
search-servers.txt
内容很简单例如:
127.0.0.1 9999
不过需要注意的是,这个9999的端口启动的是查询服务器,是用bin/nutch server 9999 的命令启动的,
和namenode 启动比较相似,我当初接触的时候就以为是namenode 的地址,郁闷的很久。
namenode 和searchserver 结合不太好,没有提供直接从namenode 到searchserver 的文件访问接口,需要自己开发,如果大
家知道有可以直接从namenode 到searchserver 的方法或者现成的程序,请告诉我一下,我需要,要是实在找不到,那就没办法了,自己写。
我现在从namenode 到searchserver的方法比较原始,不值得推荐,所以就不作介绍了。
9参考文章。