初学Nutch之简介与安装

初学Nutch之简介与安装

 

1、Nutch简介

  Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎。主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行 查询的一套工具。其底层使用了Hadoop来做分布式计算与存储,索引使用了Solr分布式索引框架来做,Solr是一个开源的全文索引框架,从 Nutch 1.3开始,其集成了这个索引架构。

1.1 Nutch的目标

  Nutch 致力于让每个人能很容易,同时花费很少就可以配置世界一流的Web搜索引擎。为了完成这一宏伟的目标,Nutch必须能够做到:

  • 每个月取几十亿网页
  • 为这些网页维护一个索引
  • 对索引文件进行每秒上千次的搜索
  • 提供高质量的搜索结果
  • 以最小的成本运作

1.2 Nutch的优点

  • 透明度

  Nutch是开放源代码的,因此任何人都可以查看他的排序算法是 如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度, 这样的索引结果并不是和站点内容相关的。因此Nutch对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。

  • 扩展性

  你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的,他可以被很好的客户订制并集成到你的应用程序中。使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。

  • 对搜索引擎的理解

  我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。 在写Nutch的过程中,从学院派和工业派借鉴了很多知识:比如:Nutch的核心部分目前已经被重新用 Map Reduce 实现了。Map Reduce 是一个分布式的处理模型,最先是从 Google 实验室提出来的。并且 Nutch 也吸引了很多研究者,他们非常乐于尝试新的搜索算法,因为对Nutch 来说,这是非常容易实现扩展的。

1.3 Nutch与Lucene关系

  Lucene是一个Java高性能全文索引引擎工具包可以方便的嵌入到各种实际应用中实现全文索引搜索功能。它提供了一系列API,能够对文档进行预处理、过滤、分析、索引和检索排序。在保持高效和简单的特点之外,还保证了开发者可以自由定制和组合各种核心功能。Nutch是一个应用程序,是一个以Lucene为基础实现的搜索引擎应用,Lucene为Nutch 提供了文本搜索和索引的API,Nutch不仅提供搜索,而且还有数据抓取的功能。

  简单的说:

  • Lucene 不是完整的应用程序,而是一个用于实现全文检索的软件库。
  • Nutch 是一个应用程序,可以以 Lucene 为基础实现搜索引擎应用。

  一个常见的问题是:我应该使用Lucene还是Nutch?

  最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。

  常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。

  在你没有本地数据源,或者数据源非常分散的情况下,应该使用Nutch。

2、Nutch安装

我们现在进行的是Nutch的单机版安装以及配置。

2.1准备

  操作系统:CentOS7.0 

  JDK版本:jdk-7u15-linux-x64.tar.gz

  Nutch版本:apache-nutch-1.2-bin.tar.gz

  Tomcat版本:apache-tomcat-7.0.61.tar.gz

2.2 安装CentOS

  CentOS7.0安装说明。

2.3 安装JDK

  JDK1.7安装说明。

2.4 安装Tomcat

  将apache-tomcat-7.0.61.tar.gz拷贝到CentOS系统内,解压。

  

tar -zxvf /home/hadoop/下载/apache-tomcat-7.0.61.tar.gz -C /opt

  添加Tomcat环境变量

vim /etc/profile

source /etc/profile
# set tomcat environment
export CATALINA_HOME=/opt/apache-tomcat-7.0.61/
export CATALINA_BASE=/opt/apache-tomcat-7.0.61/
export PATH=$PATH:$ CATALINA_HOME/bin

  

  启动tomcat

[root@localhost hadoop]# cd /opt/apache-tomcat-7.0.61/
[root@localhost apache-tomcat-7.0.61]# bin/catalina.sh start

  

  访问地址:http://127.0.0.1:8080

2.5 安装Nutch

  将apache-nutch-1.2-bin.tar.gz拷贝到CentOS系统内,解压。

tar -zxvf /home/hadoop/下载/apache-tomcat-7.0.61.tar.gz -C /opt

  

  测试Nutch命令

[root@localhost apache-tomcat-7.0.61]# cd /opt/nutch-1.2/
[root@localhost nutch-1.2]# bin/nutch

   

  将nutch自带的war文件拷贝到webapps下并解压,修改文件夹名称为ROOT

  

  启动tomcat

[root@localhost nutch-1.2]# cd /opt/apache-tomcat-7.0.61/
[root@localhost apache-tomcat-7.0.61]# bin/catalina.sh start
# bin/catalina.sh stop   #关闭tomcat命令

  

2.6 体验Nutch

  增加要抓取的页面

[root@localhost apache-tomcat-7.0.61]# cd /opt/nutch-1.2/
[root@localhost nutch-1.2]# mkdir urls
[root@localhost nutch-1.2]#echo http://news.163.com/>>urls/163

  

  编辑conf/crawl-urlfilter.txt文件,设定要抓取的网址信息。

[root@localhost nutch-1.2]#vim conf/crawl-urlfilter.txt
修改MY.DOMAIN.NAME为:
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*163.com/

  编辑conf/nutch-site.xml文件,增加代理的属性,并编辑相应的属性值

  设定搜索目录(是由于默认的segment路径与我们实际的路径不符所造成的)

[root@localhost nutch-1.2]# cd /opt/apache-tomcat-7.0.61/
[root@localhost apache-tomcat-7.0.61]# vim webapps/ROOT/WEB-INF/classes/nutch-site.xml

  增加四行代码,修改成为

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <!-- Put site-specific property overrides in this file. --> <configuration>
<property>
<name>searcher.dir</name>
<value>/opt/nutch-1.2/crawl.demo</value>
</property>
</configuration>

  这里的/opt/nutch-1.2/crawl.demo是nutch路径,爬虫到时候的数据就会放在程序新建的crawl.demo下面,即nutch抓取的页面的保存目录。

  nutch对中文的支持还不完善,需要修改tomcat文件夹下conf/server.xml文件

[root@localhost apache-tomcat-7.0.61]# vim conf/server.xml 

  增加两句,修改为

    <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true" />

  抓取网页

[root@localhost nutch-1.2]# bin/nutch crawl urls -dir crawl.demo -depth 2 -threads 4 -topN 5 >& crawl.log

  

  抓取过程写入crawl.log中,可以查看如下

  

  搜索发生错误时,查看crawl.log文件是一个不错的办法。

  查看结果

  非中文搜索结果:

  

  中文搜索结果:

  

Nutch之简介与安装的更多相关文章

  1. 初学Nutch之简介与安装

    1.Nutch简介 Nutch是一个由Java实 现的,开放源代码(open-source)的web搜索引擎.主要用于收集网页数据,然后对其进行分析,建立索引,以提供相应的接口来对其网页数据进行 查询 ...

  2. Nutch搜索引擎(第2期)_ Solr简介及安装

    1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化 ...

  3. Nutch搜索引擎Solr简介及安装

    Nutch搜索引擎(第2期)_ Solr简介及安装   1.Solr简介 Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的 ...

  4. Node.js 教程 01 - 简介、安装及配置

    系列目录: Node.js 教程 01 - 简介.安装及配置 Node.js 教程 02 - 经典的Hello World Node.js 教程 03 - 创建HTTP服务器 Node.js 教程 0 ...

  5. Java Gradle入门指南之简介、安装与任务管理

        这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍.    ...

  6. 细细品味Storm_Storm简介及安装

    Storm是由专业数据分析公司BackType开发的一个分布式实时数据处理软件,可以简单.高效.可靠地处理大量的数据流.Twitter在2011年7月收购该公司,并于2011年9月底正式将Storm项 ...

  7. VMware vSphere 5.1 简介与安装

    虚拟化系列-VMware vSphere 5.1 简介与安装  标签: 虚拟化 esxi5.1 VMware vSphere 5.1 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 . ...

  8. Node.js的简介和安装

    一.Node.js的简介和安装 a)       什么是Node.js? Node.js是一个开发平台 让JavaScript运行在服务器端的开发平台 ---简单点说就是用JavaScript写服务器 ...

  9. DNN简介以及安装

    开源框架DNN简介以及安装 donetnuke 是一款免费的开源cms框架,目前也有收费版,不过免费版也可以适应大家大部分的需求.我前些阵子是老板让我在20天内,做好一个官网并且发布,并且指定使用dn ...

随机推荐

  1. T-SQL中default值的使用

    今天介绍一下通过T-SQL语句来创建表时使用default的关键字来自动使用默认值,这个关键字和其它的如:identity,primary key ,not null ,unique等不是相同,这里简 ...

  2. cookie在vs又一次run的时候丢失

    今天写个关于http cookie的demo,发现仅仅要vs又一次执行后cookie的值就会丢失,代码例如以下 protected void Page_Load(object sender, Even ...

  3. BeagleBone Black教训四局:简单LED对照实验

    BBB教训四局:简单LED对照实验 学习BBB董事会最终目的是做同样的想象单片机控制.但控制是不一样的想法,在所有(Linux在本质上,硬件设备的控制,以虚拟文件有关的设备下的读写),研究了几天头都大 ...

  4. CloudFoundry 中的GoRouter性能測试

    之前一直感觉CloudFoundry的GoRouter的性能不靠谱,或者我们的CloudFoundry 部署架构存在问题,想着进行一些压力測试,可是一直苦于没有压力測试的工具.上一周,部门须要出一个測 ...

  5. SQL Server 2008 新增T-SQL 简写语法

    1.定义变量时可以直接赋值 DECLARE @Id int = 5 2.Insert 语句可以一次插入多行数据 INSERT INTO StateList VALUES(@Id, 'WA'), (@I ...

  6. 使用hadoop命令rcc生成Record 一个简单的方法来实现自己的定义writable对象

    hadoop 的bin文件夹以下一个rcc命令,网上介绍非常少.看了一下源代码.发现能够用来生成 java和c++的hadoop Record 类代码,比起自己直接实现writable 接口.简单非常 ...

  7. [ACM] POJ 3686 The Windy&#39;s (二分图最小权匹配,KM算法,特殊建图)

    The Windy's Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 4158   Accepted: 1777 Descr ...

  8. 猪和python(pig and python)

    Python 真是无处不在国内. pig 0.9后python作为嵌入式语音,采用Jython解释器使用python2.5特征,此接口是最上层org.apache.pig.scripting.Pig首 ...

  9. fragment 中利用spinner实现省市联动

    (1)布局文件就不在说明了,主要说代码的实现,先把代码贴上! package com.example.cl; import android.annotation.SuppressLint; impor ...

  10. 十二周项目三(4)——出口fibnacci第一序列20的数量

    /* * Copyright (c) 2014, 烟台大学计算机学院 * All rights reserved. * 文件名:test.cpp * 作者:陈丹妮 * 完毕日期:2014年 11 月 ...