nutch(butcher)

更新时间:2023-03-01 02:33:01 阅读: 评论:0

lucene nutch solr及hadoop的区别和联系

Lucene是索引,Nutch是完整的搜索引擎实现,是基于Lucene来实现的。

可以这么理解,Lucene是一个基础的东西,主要用于建立数据的索引,通过开发人员自己调用Lucene api使用。Nutch是一个做好的成品,配置好后就是一个简单的百度,可以采集、搜索数据等等,Lucene是百度服务器上搜索操作时具体执行的代码。

如何在web工程中调用nutch

Nutch默认只给用户提供一种是用方法就是用一个cygwin的模拟器去模拟一个的环境,然后用户去用命令行在cygwin中执行搜索,还有就是当开发者把nutch的源代码导入到eclip的工程目录下然后执行
org.apache.nutch.crawl.Crawl类的main()这两种方法只是适合程序员做调试的时候手动开启,所以在二次开发nutch的时候就要把crawl放到在jsp中去调用,
步骤
1:新建一个web工程,把nutch源代码中plugins文件夹下的目录复制到src下,把nutch下src/java 中的这些包复制src下

2:把nutch中conf文件夹的所有配置文件复制到src目录下,把nutch中nutch.job文件复制到src下边
3 把nutch中lib文件夹的jar文件复制到web-inf的lib下
4 重新在src下建立一个类,用这个类去调用crawl的main()

package valley.test;import org.apache.nutch.crawl.Crawl;public class test {public static void main(String[] args) {String []arg ={"url.txt","-dir","crawled","-depth","10","-topN","50"};try {Crawl.main(arg);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}}}

3 接下来就可以在jsp中去调用这个test类了,一般在调用的时候都会出现一个异常-Xms100m -Xmx800m 异常代码如下Injector: Converting injected urls to crawl db entries.
java.io.IOException: Job failed!at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1232)at org.apache.nutch.crawl.Injector.inject(Injector.java:160)at org.apache.nutch.crawl.Crawl.main(Crawl.java:113)at valley.test.test.main(test.java:10)at org.apache.jsp.MyJsp_jsp._jspService(MyJsp_jsp.java:79)at org.apache.jasper.runtime.HttpJspBa.rvice(HttpJspBa.java:94)at javax.rvlet.http.HttpServlet.rvice(HttpServlet.java:717)at org.apache.jasper.rvlet.JspServletWrapper.rvice(JspServletWrapper.java:324)at org.apache.jasper.rvlet.JspServlet.rviceJspFile(JspServlet.java:292)at org.apache.jasper.rvlet.JspServlet.rvice(JspServlet.java:236)at javax.rvlet.http.HttpServlet.rvice(HttpServlet.java:717)at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)at org.apache.catalina.connector.CoyoteAdapter.rvice(CoyoteAdapter.java:293)at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)at java.lang.Thread.run(Thread.java:619)

这是因为tomcat的内存不够引起的具体解决办法不在罗嗦,不要忘记修改src下配置文件,如何修改和nutch中修改相同。

最后肯定感觉很奇怪,没什么没有说url.txt放在那个位置, url.txt一定要放在tomcat/bin 下,你爬取的文件也会自动存放在bin下具体原因我也搞不明白,这些的前提是如果你使用tomcat做web服务,项目的jdk一定要使用jdk1.6不然是编译 不通过的

如何读取nutch抓取数据

  1.首先nutch的配置已经在博客里面写好了,如果还不知道,建议现看下,然后再读这篇文章。
  2.用一个SequenceFile.Reader来读取排序的输入。SequenceFile.Reader m_reader = m_reader = new SequenceFile.Reader(fs, content, conf);
  3.用NutchConfiguration.create()实例化一个Configuration的对象conf。
  Configuration conf = NutchConfiguration.create();
  //实例化一个path的路径,"path"是我们通过读取配置文件(conf.properties)获取的路径
  Path content = new Path(path + "/data");
  //通过这个路径就可有得到文件所在的位置。
  FileSystem fs = content.getFileSystem(conf);

要爬网页,选哪个爬虫好?Nutch?Heritrix

用heritrix比nutch要好一些。
nutch适合做搜索引擎,只是附加有crawl的功能。而heritrix是专门crawl的。
用Lucene搞索引和查询很方便简单啊,数据库里面取出数据,封装成Lucene doc,用IKAnalyzer分词,建立索引啥的都给Lucene了。现在就是要从外网爬我需要的信息,按照我本地数据的格式存入数据库了... 刚上手...

ant-ANT编译nutch时失败,请问大神们这是什么原因

前提条件:配置ant

1. 下载nutch(例如:我的是apache-nutch-2.2.1-src.tar.gz)

解压,重命名nutch文件夹(命名为nutch),然后移动文件夹到/home文件夹下

2. 编译nutch

cd nutch
ant

2.1 你可能会遇到这种错误:

Trying to override old definition of task javac
[taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.
ivy-probe-antlib:
ivy-download:
[taskdef] Could not load definitions from resource org/sonar/ant/antlib.xml. It could not be found.

原因:缺少相应的jar文件

解决方法:

(1)下载sonar-ant-task-2.1.jar,并放到nutch文件夹目录下

(2)修改build.xml文件,从而引入这个新的jar

<!-- Define the Sonar task if this hasn't been done in a common script -->
<taskdef uri="antlib:org.sonar.ant" resource="org/sonar/ant/antlib.xml">
<classpath path="${ant.library.dir}" />
<classpath path="${mysql.library.dir}" />
<classpath><filet dir="." includes="sonar*.jar" /></classpath>
</taskdef>

//找到相应的地方,增加多出的内容即可。

2.2 编译时间过长

nutch使用ivy进行构建,故编译时间长。如果时间过长,可使用该办法解决。

修改该文件:ivy/ivyttings.xml

http://mirrors.ibiblio.org/maven2/

替换

http://repo1.maven.org/maven2/

2.3 编译之后的目录:

3. 修改nutch配置文件

Nutch2.x版本存储采用Gora访问Cassandra、HBa、Accumulo、Avro等,需要在该文件中制定Gora属性。

 3.1修改 conf/nutch-site.xml

<property>
<name>storage.data.store.class</name>
<value>org.apache.gora.hba.store.HBaStore</value>
<description>Default class for storing data</description>
</property>

 3.2修改 ivy/ivy.xml

<!-- Uncomment this to u HBa as Gora backend. -->
<dependency org="org.apache.gora" name="gora-hba" rev="0.3" conf="*->default" />

 3.3修改 conf/gora.properties

gora.datastore.default=org.apache.gora.hba.store.HBaStore

配置nutch

(nutch文件夹已在/home目录下)

1. 修改系统环境变量

sudo gedit /etc/profile

//增加

#t nutch
export PATH=/home/nutch/runtime/local/bin:$PATH

2. 测试(nutch/runtime/local/bin中./nutch & ./crawl)


本文发布于:2023-02-28 19:19:00,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/zhishi/a/167760918159108.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:nutch(butcher).doc

本文 PDF 下载地址:nutch(butcher).pdf

标签:nutch   butcher
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 实用文体写作网旗下知识大全大全栏目是一个全百科类宝库! 优秀范文|法律文书|专利查询|