两年前集成Nutch 和Solr 这两个Apache Lucene 项目组下的子项目实在是件困难的事情,需要打很多补丁(patches),为他们的联姻搜寻各种必需的组件(required components)。今非昔比,时下,在Solr4.0 也即将浮出水面的时候,两者的结合变的相对容易。
今年早些时候发布的Nutch 1.0包含了"开盒即用"的原装的(out of the box)Solr集成。虽然有各种不同的方法来利用这个新特性,这里仅介绍其中的一种方案。本方案中,Solr 作为处理搜索结果的源和入口,有效的减轻对Nutch 的搜索负担,让Nutch 负责她最擅长的工作:抓取(crawling)和提取(extracting)内容。使用Solr 作为搜索后端,换句话说,就是允许使用所有Solr Server的高级特性,诸如:查询拼写检查(spell-check),搜索提醒(suggestion),数据复制(data-replication),查询缓存等等。
为什么使用Nutch 而不是其他的简单抓取程序?
实现本文说的类似功能的替代方法也可能是使用简单的类似于Apache Droids 抓取框架,但是Nutch 提供了我们很多很好的优势。其中,显而易见的一点是Nutch 提供了可以让你完整的实现搜索应用的特性集,其次是Nutch 的高可伸缩性(scalablity)和健壮性(robust),Nutch 运行在Hadoop 上,你可以运行在单态机器上,也可以运行在一个100台机器构成的集群(cluster)上,另外,Nutch 有很高的抓取质量,你可以配置哪些页面更重要,优先抓取,拥有丰富的APIs可以让你容易的集成Nutch 到你的应用中(可扩展性),更重要的一点是,Nutch 的内建组件,超链数据库(LinkDatabase),拥有该组件,可以大幅的提高搜索结果的关联度,Nutch 在被抓取的页面之间跟踪超链接,以便依靠內部链接来判断页面和页面之间的相关度。
Nutch和Solr的安装
首先下载我们需要的软件,Apache Solr 和 Nutch。
1、从官方 下载Solr Version 1.3.0或者从这里 下载LucidWorks for Solr。
2、解压Solr安装包。
3、下载Nutch Version 1.0 (也可以下载nightly版本 )。
4、解压Nutch安装包。
tar zxvf apache-nutch-1.0.tar.gz
5、配置Solr
简单起见,我们以Solr Example中的配置为基础
a、从apache-nutch-1.0/conf拷贝Nutch Schema到apache-solr-1.3.0/example/solr/conf目录下,覆盖掉已经存在的。
我们希望允许Solr为搜索结果创建摘要,因此我们需要存储内容以便能够索引它。
b、调整schema.xml,以便"content"字段的"stored"属性等于true。
<field name="content" type="text" stored="true" indexed="true"/>
另外,我们希望能够容易的调整查询的关联度,因此这里创建一个新的请求处理器(request handler)交dismax
c、打开apache-solr-1.3.0/example/solr/conf/solrconfig.xml文件,把下面这段粘贴进去
<requestHandler name="/nutch" class="solr.SearchHandler" >
<lst name="defaults">
<str name="defType">dismax</str>
<str name="echoParams">explicit</str>
<float name="tie">0.01</float>
<str name="qf">
content^0.5 anchor^1.0 title^1.2
</str>
<str name="pf">
content^0.5 anchor^1.5 title^1.2 site^1.5
</str>
<str name="fl">
url
</str>
<str name="mm">
2<-1 5<-2 6<90%
</str>
<int name="ps">100</int>
<bool hl="true"/>
<str name="q.alt">*:*</str>
<str name="hl.fl">title url content</str>
<str name="f.title.hl.fragsize">0</str>
<str name="f.title.hl.alternateField">title</str>
<str name="f.url.hl.fragsize">0</str>
<str name="f.url.hl.alternateField">url</str>
<str name="f.content.hl.fragmenter">regex</str>
</lst>
</requestHandler>
6、启动Solr
cd apache-solr-1.3.0/example
java -jar start.jar
7、配置Nutch
a、打开apache-nutch-1.0/conf下的nutch-site.xml,用下面的内容(我们制定了蜘蛛的名称,激活插件,限制单机一次运行抓取的最大URL数为100)替换:
<?xml version="1.0"?>
<configuration>
<property>
<name>http.agent.name</name>
<value>nutch-solr-integration</value>
</property>
<property>
<name>generate.max.per.host</name>
<value>100</value>
</property>
<property>
<name>plugin.includes</name>
<value>protocol-http|urlfilter-regex|parse-html|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
</property>
</configuration>
b、打开apache-nutch-1.0/conf下的regex-urlfilter.txt,用下面的内容替换:
-^(https|telnet|file|ftp|mailto):
# skip some suffixes
-\.(swf|SWF|doc|DOC|mp3|MP3|WMV|wmv|txt|TXT|rtf|RTF|avi|AVI|m3u|M3U|flv|FLV|WAV|wav|mp4|MP4|avi|AVI|rss|RSS|xml|XML|pdf|PDF|js|JS|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)$
# skip URLs containing certain characters as probable queries, etc.
-[?*!@=]
# allow urls in foofactory.fi domain
+^http://([a-z0-9\-A-Z]*\.)*lucidimagination.com/
# deny anything else
-.
8、创建一个种子列表(初始化的URL列表)
mkdir urls
echo "http://www.haoguoliang.com/" > urls/seed.txt
9、将种子URL列表导入Nutch的crawldb(注意在nutch文件夹下执行)
bin/nutch inject crawl/crawldb urls
10、生成获取(fetch)列表,以便获取和分析内容
bin/nutch generate crawl/crawldb crawl/segments
以上命令在crawl/segments目录下生成了一个新的segment目录,里边存储了抓到的URLs,下边的指令里,我们需要最新的segment目录作为参数,存储到环境变量SEGMENT里:
export SEGMENT=crawl/segments/`ls -tr crawl/segments|tail -1`
现在,启动抓取程序真正开始抓取内容
bin/nutch fetch $SEGMENT -noParsing
接下来我们分析、解析抓取下来的内容
bin/nutch parse $SEGMENT
更新Nutch crawldb,updatedb命令会存储以上两步抓取(fetch)和分析(parse)最新的segment而得到的新的URLs到Nutch crawldb,以便后续的继续抓取,除了URLs之外,Nutch也存储了相应的页面内容,防止相同的URLs被反反复复的抓取。
bin/nutch updatedb crawl/crawldb $SEGMENT -filter -normalize
到此,一个完整的抓取周期结束了,你可以重复步骤10多次以便可以抓取更多的内容。
11、创建超链库
bin/nutch invertlinks crawl/linkdb -dir crawl/segments
12、索引所有segments中的内容到Solr中
bin/nutch solrindex http://127.0.0.1:8983/solr/ crawl/crawldb crawl/linkdb crawl/segments/*
现在,所有Nutch抓取的内容已经被Solr索引了,你可以通过Solr Admin执行查询操作了
http://127.0.0.1:8983/solr/admin 或者直接通过
http://127.0.0.1:8983/solr/nutch/?q=solr&version=2.2&start=0&rows=10&indent=on&wt=json
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lin_zyang/archive/2010/01/05/5127630.aspx
分享到:
相关推荐
Nutch 1.2 版本后,它开始使用 Ivy 进行依赖管理,方便构建和集成其他组件。 【Hadoop】 Hadoop 是一个分布式计算框架,用于处理和存储大量数据。在 Nutch 中,Hadoop 负责分布式爬虫的执行和数据处理。Nutch 使用 ...
本文将深入探讨如何使用Apache Nutch与Solr等组件,结合Htmlunit和Selenium WebDriver,来实现对AJAX加载类型页面的全面内容抓取、解析、索引,以及特定数据项的提取。 首先,Apache Nutch是一个开源的Web爬虫框架...
因此,利用Eclipse作为开发工具,可以简化Nutch的配置流程,提供一个友好的图形界面来管理项目和代码,同时利用其强大的调试功能,帮助开发者快速定位和解决问题。 ### 二、Eclipse配置Nutch的步骤详解 #### 步骤1...
本文将详细介绍在Windows和Linux环境下如何搭建Nutch 1.7,并探讨如何将其与Solr集成使用。 **Nutch 在 Windows 下的搭建过程** 1. **准备工作** - 检查系统需求:确保你的Windows系统满足运行Java开发环境(JDK...
Nutch与Solr的无缝集成,简化了数据检索和管理流程,无需依赖于Apache Tomcat或Apache Lucene来运行和建立索引。 #### 二、安装前准备 在Windows平台上部署Nutch 1.4,需预先安装以下工具和软件: 1. **Java JDK ...
Nutch可以与Solr或Elasticsearch等搜索引擎集成,实现快速高效的搜索功能。此外,还可以与HBase等NoSQL数据库配合,用于大规模数据存储和检索。 七、实战教程 “Nutch使用.pdf”和“Nutch入门教程.pdf”这两份文档...
在实际应用中,Apache Nutch 通常与Apache Solr、Hadoop等组件一起工作,构建完整的数据获取、处理、存储和搜索的解决方案,满足各种大规模信息处理需求。通过不断优化和定制,Nutch 可以成为企业级大数据处理的重要...
总的来说,Nutch 2.2.1 的安装和配置涉及到多个组件的集成,包括 Ant、JDK、Tomcat、MySQL 和 Solr。每个组件都需要正确配置才能使 Nutch 正常运行。理解这些组件的作用以及它们之间的交互是掌握 Nutch 的关键,这将...
Nutch可以与Solr、Elasticsearch等全文搜索引擎集成,提供高级的搜索功能。同时,Nutch还可以与HBase结合,用于实时查询和数据分析。 七、实战演练 通过阅读提供的“Nutch入门教程.pdf”,你可以学习如何安装Nutch...
Nutch是一款开源的网络爬虫项目,与Hadoop紧密集成,用于抓取和索引网页。Nutch不仅具备基本的网页抓取功能,还支持网页解析、链接分析和评分系统,以确定网页的重要性。Nutch的插件架构允许开发者根据需求自定义...
“工具”标签则暗示这份资料可能包含了一些辅助工具或者插件的使用,比如如何使用Nutch与Solr或Elasticsearch集成来构建搜索引擎,或者如何使用Nutch的命令行工具进行数据处理。 压缩包中的“Nutch.pdf”可能是...
总的来说,搭建Nutch Web开发环境是一个涉及多组件集成的过程,需要对Java、Maven、Hadoop和Solr有一定的了解。通过这个过程,你可以深入理解搜索引擎背后的工作原理,并为自己的应用定制合适的搜索解决方案。
Nutch可以与Solr或Elasticsearch集成,用于存储和搜索生成的索引。安装Solr或Elasticsearch,并配置Nutch的相关配置,如`solrserver.url`或`elasticsearch.nodes`。 **步骤十:测试搜索** 最后,启动Solr或Elastic...
Nutch是一个开源的Web爬虫和搜索引擎项目,它集成了网页抓取、解析、评分和索引等功能。Nutch的插件系统是其灵活性的关键,允许根据特定需求定制抓取和解析规则,提高搜索的相关度。例如,开发支持表单登录的...
通过与 Solr 集成,Nutch 提供了一个完整的从抓取到检索的解决方案,适用于需要大量数据处理和分析的项目,如舆情监控系统等。了解并掌握 Nutch 的工作原理和使用方法,有助于提升Web数据的管理和分析能力。
在Cygwin下集成Nutch,可能遇到的问题包括Java版本不兼容、路径设置错误、Nutch配置文件中的语法错误、或者与Cygwin路径转换相关的错误。 4. **Solr集成**:Solr是Apache Lucene项目的一部分,用于全文搜索和索引。...
- 配置存储路径,如`generators.out.dir`,`solr.server.url`(如果需要集成Solr)。 3. `regex-urlfilter.txt`:定义URL过滤规则,决定哪些网址应被忽略或包含。 4. `fetcher.server.max.fetch.delay`:设置最大...
【大数据技术文档27.docx】的概述主要讨论了如何利用大数据技术解决互联网信息检索的挑战,特别是通过集成Hadoop、Nutch和Solr来构建一个分布式搜索引擎。本系统的目标是提高搜索效率、主题相关度和系统的可扩展性。...
8. **可与其他系统集成**:Nutch 可以与Solr或Elasticsearch等搜索平台集成,提供更高级的搜索功能,如 faceted search(分面搜索)和实时搜索。 在使用 Apache Nutch 1.5.1 时,你需要关注的几个关键点包括配置...
- **集成其他系统**:Nutch可以与Solr、Elasticsearch等搜索服务器集成,提供更丰富的搜索功能。 5. **Nutch实战应用** 实际应用中,Nutch通常与其他大数据组件一起使用,如HBase存储索引数据,Solr或Elastic...