Mac上搭建nutch-1.8+solr-4.8.1

首先进入终端cd ~到用户主目录下,然后,开始下载:

什么,没有wget命令,请自己安装brew install wget,如果你连brew都没有,自己百度怎么装,这是mac下的yum,apt-get非常有用的工具

解压到当前目录下,然后进入验证下,看看是不是有效:

如果有warning 看看是不是没有设置JAVA_HOME,如果是Permission denied,用chmod改权限
现在添加种子URL,《逆转未来 X-Men》

接下去是设置URL过滤准则

然后set nu!找到第32行,改为如下形式

然后vim nutch-site.xml,增加agent name的配置

下载解压solr

检查安装

打开本地URL:localhost:8983/solr/admin,有显示说明安装成功了
现在结合nutch和solr
将~/apache-nutch-1.8/conf/schema-solr4.xml拷贝到~/solr-4.8.1/solr/collection1/conf/,重命名为schema.xml

并在<fields>…</fields>最后添加一行添加

现在修改lockType

做如下修改:

然后在solr-4.8.1/example/solr/collection1/data/index目录下找到write.lock然后删除这个文件,再运行solr就不会有lockType错误
现在回到nutch目录下,bin/crawl,会看到

crawl <seedDir> <crawlDir> <solrURL> <numberOfRounds>

其中seedDir是url描述文件放置的目录,crawlDir是存放数据的根目录,solrURL是solr服务地址,最后一个参数是迭代的次数,运行这条命令

一般会等几分钟,屏幕上会有很多fetching url,

最后键入

可以看到爬虫结果了

这个是自动抓取,现在让我们来手动操作一遍,首先把刚才抓取的数据都删除

nutch抓取的数据是由这些组成的:
crawldb,这里的信息包括,每一个nutch可以识别的url,包括url是否被抓取,以及抓取的时间
linkdb,它的信息包括,已知的每个URL的链接列表,包括源URL和锚文本的链接
一组segments,每个segments是urls抓取作为一个单元的组,segments是字典形式,也就是key-value,包括:

  • crawl_generate 表示将要被抓取的一组urls
  • crawl_fetch 表示抓取的url的状态
  • content 包含从每条url获取的原始的内容
  • parse_text 包含每条url的解析文本
  • parse_data 包含每条url的外链和元数据解析
  • parse_parse 包括外链urls用来更新crawldb

inject:使用种子URL列表,生成crawldb

将主目录urls下的种子URL生成一个URL数据库,放在crawdb目录下

生成fetch list,存放在一个segments/日期目录下,然后把这个目录的名字保存在shell变量ss里

开始抓取

这样会在$ss目录下,生成两个子目录,crawl_fetch和content

开始解析

更新crawldb

这会把crawldb/current重命名为crawldb/old,并生成新的crawldb/current

在建立索引之前,我们首先要反转所有的链接,这样我们就可以获得一个页面所有的锚文本,并给这些锚文本建立索引

提交数据给solr,建立索引

如果索引里有重复数据,我们需要去重

如果数据过时了,在索引里删除吧

参考http://cn.soulmachine.me/blog/20140121/,并纠正了版本不一致的错误。



12 thoughts on “Mac上搭建nutch-1.8+solr-4.8.1”

  1. Dedup on crawldb
    Indexing 20140827121806 on SOLR index -> http://localhost:8088/solr/
    Indexer: starting at 2014-08-27 12:18:24
    Indexer: deleting gone documents: false
    Indexer: URL filtering: false
    Indexer: URL normalizing: false
    Active IndexWriters :
    SOLRIndexWriter
    solr.server.url : URL of the SOLR instance (mandatory)
    solr.commit.size : buffer size when sending to SOLR (default 1000)
    solr.mapping.file : name of the mapping file for fields (default solrindex-mapping.xml)
    solr.auth : use authentication (default false)
    solr.auth.username : use authentication (default false)
    solr.auth : username for authentication
    solr.auth.password : password for authentication

    Indexer: java.io.IOException: Job failed!
    at org.apache.hadoop.mapred.JobClient.runJob(JobClient.java:1357)
    at org.apache.nutch.indexer.IndexingJob.index(IndexingJob.java:114)
    at org.apache.nutch.indexer.IndexingJob.run(IndexingJob.java:176)
    at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
    at org.apache.nutch.indexer.IndexingJob.main(IndexingJob.java:186)

    [root@shuixx apache-nutch-1.8]# nutch readdb crawlDir/crawldb/ -stats
    CrawlDb statistics start: crawlDir/crawldb/
    Statistics for CrawlDb: crawlDir/crawldb/
    TOTAL urls: 30
    retry 0: 30
    min score: 0.016
    avg score: 0.099533334
    max score: 1.016
    status 1 (db_unfetched): 28
    status 2 (db_fetched): 2
    CrawlDb statistics: done
    这是什么问题?怎么解决

  2. 楼主,用你的方法,在执行bin/crawl时,并没有这一项,不知道是怎么回事,求指教,我是用的nutch-1.10 ,solr-4.10.4

  3. Thanks for the marvelous posting! I seriously enjoyed
    reading it, you are a great author.I will be sure to bookmark your
    blog and may come back later in life. I want
    to encourage one to continue your great work, have a nice evening!

发表评论

电子邮件地址不会被公开。 必填项已用*标注