ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:24.84KB ,
资源ID:5039864      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5039864.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(Nutch 使用总结.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

Nutch 使用总结.docx

1、Nutch 使用总结Nutch是一个开源Java实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。Nutch使用方法简介:nutch1.2 eclipse tomcat6.0 配置:Nutch 实战:介绍了开源搜索引擎 Nutch 的基本信息,详细说明了在 Eclispe 下运行 Nutch 的步骤和需要注意的问题,还分析了部分源代码。很好的文章Nutch 目录结构bin:用于命令行运行的文件;conf:Nutch的配置文件lib:一些运行所需要的jar文件;plugins:存放相应的插件;src:Nutch的所有源文件;webapps:web运行相关文件

2、;nutch-0.9.war是 Nutch所提供的基于Tomcat的应用程序包。Nutch工作流程1. 将起始 URL 集合注入到 Nutch 系统之中。2. 生成片段文件,其中包含了将要抓取的 URL 地址。3. 根据URL地址在互联网上抓取相应的内容。4. 解析所抓取到的网页,并分析其中的文本和数据。5. 根据新抓取的网页中的URL集合来更新起始URL集合,并再次进行抓取。6. 同时,对抓取到的网页内容建立索引,生成索引文件存放在系统之中。(1)准备需要的软件列表 Cygwin (下载地址: Jdk(1.4.2以上版本,下载地址 Nutch(推荐使用0.9版本,下载地址http:/www.

3、apache.org/dyn/closer.cgi/lucene/nutch/) Tomcat(下载地址http:/tomcat.apache.org/)(2)安装软件 1) Cygwin 打开安装程序Cygwin.exe后,在Choose Installation Type页选择 Install from Internet(如果你已经把全部安装包下载到本地,就可以选择Install from local directory选项)。然后点击Next. 然后选择安装目录,其他可保持默认选项,点击Next. 选择保存安装包的本地目录,点击Next. 选择下载连接的类型,点击Next。 然后通过服务

4、器先下在需要安装的包列表,改为install比较合适,默认为default安装不全 完成安装。图文讲解 2)安装JDK,注意安装完成后需要在Windows的环境变量中加入JAVA_HOME=你的jdk的安装目录 3) 安装Tomcat,下载安装版。 4)把Nutch解压到本地目录,例如D:/nutch。启动Cygwin程序,Cygwin程序会启动一个模拟Unix/Linux的终端窗口,然后使用方式就和Unix的Shell一样了,Cygwin的根目录是/cygdriver,这个目录相当于Windows的“我的电脑”,然后进入Nutch的目录,例如:cd /cygdriver/d/nutch,然后

5、运行bin/nutch命令,如果出现下面的Usage 信息,这样Nutch就安装完成了,非常简单。注意cygwin路径的切换方法: 命令:cd d:/nutch(3)使用NutchNutch 的爬虫有两种方式 爬行企业内部网(Intranet crawling)。针对少数网站进行,用 crawl 命令。 爬行整个互联网。 使用低层的 inject, generate, fetch 和 updatedb 命令,具有更强的可控制性。 1) 添加需要爬行的内部网地址信息。 新建一个目录,写入一些网址信息,例如我们需要爬行csdn的内部网。 mkdir urls echo urls/csdn 后面有斜

6、线 2) 然后修改 conf目录下的crawl-urlfilter.txt文件,这个文件中的正则表达式定义了那些文件可以被Nutch爬行,那些不可以被爬行。其中以“+”号开头的表示属于Nuch合法的Url连接,“-”号开头相反。我们需要修改文件中的 # accept hosts in MY.DOMAIN.NAME +http:/(a-z0-9*/.)*MY.DOMAIN.NAME/ 为 # accept hosts in MY.DOMAIN.NAME +http:/(a-z0-9*/.)*或# accept hosts in MY.DOMAIN.NAME+http:/(a-z0-9*.)* 3

7、)接下来我们需要配置conf/nutch-site.xml,这个需要填写相关的代理属性,应为Nutch也许要准受Robot协议,在爬行人家网站的时候,把相关的信息提交给被爬行的网站。 我们在这个文件中,需要在和之间,加入是个代理属性,例如http.agent.name属性 http.agent.name nutch-1.2 其中除了name字段需要准确添写外,其他value和descrption字段可或添写。同样,还需要加入http.agent.description,http.agent.url和http.agent.email这三个属性。例如xhtmlview plaincopy1. 2.

8、 3. 4. 5. 6. http.agent.name7. nutch-1.28. tjt9. 10. 11. http.robots.403.allow12. true13. 14. 15. 16. http.agent.description17. tjtnutchhoho18. 19. 20. 21. http.agent.url22. 23. 24. 25. 26. http.agent.email27. tangjiutao28. 29. 30. 31. http.agent.version32. Nutch-1.233. 34. 35. 36. 37. searcher.dir3

9、8. E:/nutch/csdn39. 40. 41. 这里的设置,是因为nutch遵守了 robots协议,在获取 response时,把自己的相关信息提交给被爬行的网站,以供识别。 4)这样就完成了全部爬行所需要的配置,下面就可以用nutch的crawl命令来派性企业内部网了 再nutch目录中输入: bin/nutch crawl urls -dir csdn -threads 4 -depth 2 -topN 30 这样nutch就启动并且开始爬行任务了,由于是简单示例,所以以上这个命令很快就结束了,因为爬行的广度和深度都非常小,也就是说,示例只爬行了csdn网站的很小一部分网页。 下

10、面就上面命令的参数进行说明: Crawl命令的使用说明为: crawl -dir index -threads num -depth num -topN num 其中: urls是存放需要爬行网址的文件夹目录。 -dir选项是抓取的页面的存放目录。 -threads选项是启动的最大线程数。 -depth选项是能爬行的最大深度,也就是最多爬行到第几级的页面,也叫爬行深度。 -topN选项是在每层深度上,所能爬行的最多页面数,也称爬行广度。 完成爬行后,会在-dir选项所指定的目录中保存网页信息和搜索需要的索引。*常见报错:(1)Exception in thread main java.io.I

11、OException: Job failed! at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1252) at org.apache.nutch.crawl.Injector.inject(Injector.java:217) at org.apache.nutch.crawl.Crawl.main(Crawl.java:124)请检查nutch-default.xml的plugin.folders是否修改为./src/plugin,默认为plugins,修改后启动正常(2)org.apache.nutch.plugin

12、.PluginRuntimeException: java.lang.ClassNotFoundException: .urlnormalizer.basic.BasicURLNormalizer*PDF支持:默认情况下不支持对pdf文件的索引,要想对pdf文件也进行正确的索上,找到nutch-default.xml中的plugin.includes属性,添加上pdf,即为parse-(text|html|js|pdf)。Nutch的爬行结果目录爬行结果目录含有segment, linkdb, indexes, index, crawldb文件夹Nutch的数据文件crawldb: 爬行数据库

13、,用来存储所要爬行的网址linkdb: 链接数据库,用来存储每个网址的链接地址,包括源地址和链接地址segments: 抓取的网址被作为一个单元,而一个segment就是一个单元。一个segment包括以下子目录: crawl_generate:包含所抓取的网址列表 crawl_fetch:包含每个抓取页面的状态 content:包含每个抓取页面的内容 parse_text:包含每个抓取页面的解析文本 parse_data:包含每个页面的外部链接和元数据 crawl_parse:包含网址的外部链接地址,用于更新crawldb数据库indexes: 采用Lucene的格式建立索引集index:最

14、终生成的目录WebDB内存储了两种实体的信息:page和link。Page实体通过描述网络上一个网页的特征信息来表征一个实际的网页,因为网页有很多个需要描述,WebDB中通过网页的URL和网页内容的MD5两种索引方法对这些网页实体进行了索引。Page实体描述的网页特征主要包括网页内的link数目,抓取此网页的时间等相关抓取信息,对此网页的重要度评分等。同样的,Link实体描述的是两个page实体之间的链接关系。WebDB构成了一个所抓取网页的链接结构图,这个图中Page实体是图的结点,而Link实体则代表图的边。一次爬行中每次循环都会产生一个segment,每个segment内存储的是爬虫Cr

15、awler在单独一次抓取循环中抓到的网页以及这些网页的索引。Crawler爬行时会根据WebDB中的link关系按照一定的爬行策略生成每次抓取循环所需的fetchlist,然后Fetcher通过fetchlist中的URLs抓取这些网页并索引,然后将其存入segment。Segment是有时限的,当这些网页被Crawler重新抓取后,先前抓取产生的segment就作废了。在存储中。Segment文件夹是以产生时间命名的,方便我们删除作废的segments以节省存储空间。Index是Crawler抓取的所有网页的索引,它是通过对所有单个segment中的索引进行合并处理所得的。Nutch利用Lu

16、cene技术进行索引,所以Lucene中对索引进行操作的接口对Nutch中的index同样有效。但是需要注意的是,Lucene中的segment和Nutch中的不同,Lucene中的segment是索引index的一部分,但是Nutch中的segment只是WebDB中各个部分网页的内容和索引,最后通过其生成的index跟这些segment已经毫无关系了。Nutch之Crawler工作流程在Nutch中,Crawler操作的实现是通过一系列子操作的实现来完成的。这些子操作Nutch都提供了子命令行可以单独进行调用。下面就是这些子操作的功能描述以及命令行,命令行在括号中。1) 建立初始 URL集

17、2) 将 URL 集注入 crawldb数据库-inject3) 根据 crawldb数据库创建抓取列表-generate4) 执行抓取,获取网页信息-fetch5) 更新数据库,把获取到的页面信息存入数据库中-updatedb6) 重复进行 35的步骤,直到预先设定的抓取深度。-这个循环过程被称为“产生/抓取/更新”循环7) 根据sengments 的内容更新 linkdb数据库-invertlinks8) 建立索引-index9) 在索引中丢弃有重复内容的网页和重复的URLs (dedup).10) 将segments中的索引进行合并生成用于检索的最终index(merge).11) 用户

18、通过用户接口进行查询操作12) 将用户查询转化为lucene 查询13) 返回结果其中,16属于爬虫部分;710 属于索引部分;1113属于查询部分。在创建一个WebDB之后, “产生/抓取/更新”循环(步骤36)根据一些种子URLs开始启动。当这个循环彻底结束,Crawler根据抓取中生成的segments创建索引(步骤710)。在进行重复URLs清除(步骤9)之前,每个segment的索引都是独立的(步骤8)。最终,各个独立的segment索引被合并为一个最终的索引index(步骤10)。其中有一个细节问题,Dedup操作主要用于清除segment索引中的重复URLs,但是我们知道,在We

19、bDB中是不允许重复的URL存在的,那么为什么这里还要进行清除呢?原因在于抓取的更新。比方说一个月之前你抓取过这些网页,一个月后为了更新进行了重新抓取,那么旧的segment在没有删除之前仍然起作用,这个时候就需要在新旧segment之间进行除重。Nutch本身的搜索测试:在 cygwin 中输入 ”bin/nutch org.apache.nutch.searcher.NutchBean csdn” ,即调用 NutchBean 的 main 方法搜索关键字 ”csdn” ,在 cygwin 可以看到搜索出: Total hits: 29 ( hits 相当于 JDBC 的 results

20、)注意: 如果发现搜索结果始终为 0,则需要配置一下 nutch-1.2/conf 的 nutch-site.xml 试试添加下面这段:(注意之前的http.agent.name必须有,如果没有这个property,则搜索结果一直为0)xhtmlview plaincopy1. 2. 3. searcher.dir4. E:/nutch/csdn5. 6. 使用Tomcat进行搜索测试(1)将nutch目录的nutch-1.0.war复制到tomcat/webapps下,可以改名为nutch以简化目录名,不改也可以(2)启动tomcat,然后就在webapps下面自动生成了一个nutch的文件

21、夹,(3)打开 nutch/WEB-INF/classes下的nutch-site.xml文件,改为以下内容xhtmlview plaincopy1. 2. 3. 4. 5. searcher.dir6. E:/nutch/csdn7. 8. 9. (4) 启动Tomcat,打开浏览器在地址栏中输入:http:/localhost:8080/nutch,就可以看到搜索页面了.注意:从网页上复制的代码可能存在一些非英文编码字符,会造成影响,我就遇到了这个问题。把前面的空格等都去掉就解决了。nutch抓取下来,但搜索不到结果的解决方案(1)在 cygwin 中输入 ”bin/nutch org.a

22、pache.nutch.searcher.NutchBean csdn”测试是否已经抓取了页面,如果有结果,则说明有(2)查看tomcat的 webapps/nutch/WEB-INF/classes下的nutch-site.xml文件里,是否设置了searcher.dir属性,这是必须的(3)别忘了在设置完成后,要重启下tomcat。(?每?Cnutch-site.xml ?“sv?d?V启动tomcat?j(4)貌似nutch/conf/nutch-site.xml也要设置searcher.dir属性,都进行设置中文乱码问题在文本框中输入关键字,就可以进行搜索了.不过用户在使用时会发现,对于英文单词的搜索一切正常,而当要搜索中文词语时会出现乱码。其实这个问题是Tomcat设置的问题,解决办法是修改tomcat的配置文件,打开tomcat/conf下的server.xml文件,将其中的Connector部分改成如下形式即可:将改为然后重启tomcat即可。索引查看LukeAll 3.01打开爬行结果目录下的index目录注意:低版本Luke不能打开该文件,需要高版本的Luke,下载地址Dedian同志翻译的Doug Cutting 访谈录 - 关于搜索引擎的开发。http:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1