网络拓扑

图 1 网络拓扑图

安装Java JDK

首先查看系统是否已经安装了其它版本号的JDK,假设有,先要把其它版本号的JDK卸载。

用root用户登录系统。

# rpm-qa|grep gcj

显示内容当中包括以下两行信息

# java-1.6.0-openjdk-1.6.0.0-1.57.1.11.9.el6_4.i686

#java-1.7.0-openjdk-1.7.0.9-2.3.8.0.el6_4.i686

卸载

#yum -y remove java-1.6.0-openjdk

#yum -y remove java-1.7.0-openjdk

去官网http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html下载 jdk-7u60-linux-i586.tar.gz。

在/usr文件夹下创建java文件夹。

#mkdir java

把jdk-7u60-linux-i586.tar.gz解压到/usr/java。

#tar-zvxf jdk-7u60-linux-i586.tar.gz -C /usr/java

加入�环境变量:

# vi /etc/profile

进入插入模式,在最后一行加入�

JAVA_HOME=/usr/java/jdk1.7.0_60

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$CLASSPATH

export CLASSPATH

wq保存退出。

输入命令

#source /etc/profile

使环境变量在当前sshclient生效。

測试:

#echo $JAVA_HOME   測试环境变量配置是否生效

#java -version     查看java版本号信息

#java

#javac             假设这两个命令都能打印出信息,说明成功安装了。

部署tomcat

到官网http://tomcat.apache.org/download-70.cgi ,下载apache-tomcat-7.0.54.tar.gz。

把apache-tomcat-7.0.54.tar.gz解压到/usr/local。

#  tar zxvf apache-tomcat-7.0.54.tar.gz  -C/usr/local

#  cd /usr/local/

#  mv apache-tomcat-7.0.54  tomcat

这时,还不能从外部訪问tomcat,须要在linux默认防护墙上打开8080port。

#vi /etc/sysconfig/iptables

进入插入模式,加入�

-AINPUT -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT

wq保存退出。

又一次启动防火墙。

#service iptables restart

启动tomcat 。

# /usr/local/tomcat/bin/startup.sh

在用户端浏览器中输入http://10.1.1.95:8080/,能够看到Tomcat欢迎界面!说明部署成功。

部署Nutch

因为我们不须要在分布式环境下部署Nutch,我们选用较早版本号的nutch-0.9。下载nutch-0.9.tar.gz,解压到/usr/local。

#  tar zxvf nutch-0.9.tar.gz  -C /usr/local

部署nutch搜索页面:

把/usr/local/tomcat/webapps/ROOT目录重命名为ROOT_BACK。

#cd/usr/local/tomcat/webapps/

#mvROOT ROOT_BACK

复制nutch根文件夹下的nutch-0.9.war到/usr/local/tomcat/webapps/。

#cp/usr/local/nutch-0.9/nutch-0.9.war /usr/local/tomcat/webapps/

启动tomcat。

#/usr/local/tomcat/bin/startup.sh

Tomcat成功启动后,我们发现/usr/local/tomcat/webapps/目录下多了一个nutch-0.9的目录。把nutch-0.9重命名为ROOT。

#mvnutch-0.9 ROOT

又一次启动tomcat。

#/usr/local/tomcat/bin/shutdown.sh

#/usr/local/tomcat/bin/startup.sh

在用户端浏览器中訪问http://10.1.1.95:8080/。得到结果页面如图 1所看到的。说明搜索页面部署成功。

2 Nutch默认搜索入口页

数据抓取和内容检索

进入nutch根文件夹。

#cd/usr/local/nutch-0.9

新建文件multiurls.txt。

#vimultiurls.txt

输入

http://sports.sina.com.cn/

http://sports.sohu.com/

http://sports.qq.com/

http://sports.cntv.cn/

http://sports.ifeng.com/

http://sports.163.com/

http://sports.uusee.com/

http://www.titan24.com/

wq保存退出。

改动craw-urlfilter.txt,同意下载随意网站。

#vi /usr/local/ nutch-0.9/conf/craw-urlfilter.txt

把原有的过滤过则凝视掉,改为接受随意的url。

# accept hosts in MY.DOMAIN.NAME

##+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

+^

wq保存退出。

进入nutch文件夹,启动下载任务。

#cd /usr/local/nutch-0.9

#bin/nutch crawl multiurls.txt –dirsports –depth 10 –topN 100 –threads 16

參数含义说明例如以下:

-dir 指定存放爬行结果的文件夹,本次抓取结果数据存放到sports文件夹中;

-depth 表明须要抓取的页面深度,本次抓取深度为10层;

-topN 表明仅仅抓取前N个url,本次抓取为取每一层的前100个页面;

-threads 指定Crawl採取下载的线程数,本次指定16个线程进行下载。

下载任务開始运行,如图 2。等待5分钟左右,下载任务运行完成,如图 3。

3 启动下载任务

4 下载任务结束

依据下载过程能够看出nutch爬取网页并建立索引库的步骤例如以下:

1)        插入器(Injector)向网页数据库加入�起始根URL;

2)        依照要求抓取的层数,用生成器(Generator)生成待下载任务;

3)        调用获取器(Fetcher),依照指定线程数实际下载对应页面;

4)        调用页面分析器(ParseSegment),分析下载内容;

5)        调用网页数据库管理工具(CrawlDb),把二级链接加入�到库中等待下载;

6)        调用链接分析工具(LinkDb),建立反向链接;

7)        调用索引器(Indexer),利用网页数据库、链接数据库和详细下载的页面内容,创建当前数据索引;

8)        调用反复数据删除器(DeleteDuplicates),删除反复数据;

9)        调用索引合并器(IndexMerger),把数据合并到历史索引库中。

改动nutch文件夹下的nutch-site.xml文件,添加�索引文件夹属性指定检索器读取数据的文件夹。

#vi/usr/local/nutch-0.9/conf/nutch-site.xml

在<configuration></configuration>之间加入�

<property>

<name>http.agent.name</name>

<value>sports.com</value>

<description>sports.com</description>

</property>

<property>

<name>searcher.dir</name>

<value>/usr/local/nutch-0.9/sports</value>

<description></description>

</property>

wq保存退出。

在终端命令窗体下測试检索。

#cd/usr/local/nutch-0.9

#bin/nutchorg.apache.nutch.searcher.NutchBean 巴西

检索结果如图 5所看到的,共找到213条相关结果。

使用Readdb工具摘要描写叙述

#bin/nutch readdb sports/crawldb –stats

得到摘要信息如图 6所看到的,共同拥有15917条链接,成功下载了601个页面。

经过上面步骤,搜索引擎的检索准备工作已经完毕了。接下来把检索结果部署到tomcatserver,使用户能够在浏览器中检索。步骤例如以下:

改动tomcat/webapps/ROOT/WEB-INF/classes目录下的nutch-site.xml文件,指定检索路径属性參数值。

#vi/usr/local/tomcat/webapps/ROOT/WEB-INF/classes/nutch-site.xml

在<configuration></configuration>之间加入�

<property>

<name>http.agent.name</name>

<value>sports.com</value>

<description>sports.com</description>

</property>

<property>

<name>searcher.dir</name>

<value>/usr/local/nutch-0.9/sports</value>

<description></description>

</property>

又一次启动tomcat(假设未启动则直接启动)。

#/usr/local/tomcat/bin/shutdown.sh

#/usr/local/tomcat/bin/startup.sh

5 在终端命令窗体下运行检索命令

6 使用Readdb获取摘要描写叙述

在用户端浏览器中訪问http://10.1.1.95:8080/。检索“世界杯”,报错:Attributevalue is quoted with " which must be escaped when used within the value。是由于tomcat版本号升级后(6.0以上),对双引號的处理机制引起的,假设出现双引號包括双引號的情况,就可能会出现这个错误。解决的方法是改动conf/catalina.properties文件。

#vi/usr/local/tomcat/conf/catalina.properties

在最后加入�

org.apache.jasper.compiler.Parser.STRICT_QUOTE_ESCAPING=false

wq保存退出。

再次检索,出现中文乱码,解决的方法是改动conf/server.xml文件。

#vi/usr/local/tomcat/conf/server.xml

找到Connector标签,加入�属性URIEncoding="UTF-8"。

wq保存退出。

又一次启动tomcat,就能够在用户端进行搜索了。检索“巴西 世界杯”,得到结果如图 7所看到的。

7 在用户端搜索的结果

參考文献

[1].    王学松,Lucene+Nutch搜索引擎开发,人民邮电出版社,2008.

[2].    http://www.coreservlets.com/Apache-Tomcat-Tutorial/

[3].    http://wiki.apache.org/nutch/NutchTutorial

Nutch+Lucene搜索引擎开发实践的更多相关文章

  1. Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)

    一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...

  2. Lucene/Solr搜索引擎开发笔记 - 第2章 Solr安装与部署(Tomcat篇)

    一.安装环境 图1-1 Tomcat和Solr的版本 我本机目前使用的Java版本为JDK 1.8,因为Solr 4.9要求Java版本为1.7+,请注意. 二.Solr部署到Tomcat流程 图1- ...

  3. 聊聊基于Lucene的搜索引擎核心技术实践

    最近公司用到了ES搜索引擎,由于ES是基于Lucene的企业搜索引擎,无意间在“聊聊架构”微信公众号里发现了这篇文章,分享给大家. 请点击链接:聊聊基于Lucene的搜索引擎核心技术实践

  4. 传智播客课程——Lucene搜索引擎

    Lucene不是一个现成的程序,类似文件搜索程序或web网络爬行器或是一个网站的搜索引擎.Lucene是一个软件库,一个开发工具包,而不是一个具有完整特征的搜索应用程序.它本身只关注文本的索引和搜索. ...

  5. 《JavaScript设计模式与开发实践》整理

    最近在研读一本书<JavaScript设计模式与开发实践>,进阶用的. 一.高阶函数 高阶函数是指至少满足下列条件之一的函数. 1. 函数可以作为参数被传递. 2. 函数可以作为返回值输出 ...

  6. Android游戏开发实践(1)之NDK与JNI开发03

    Android游戏开发实践(1)之NDK与JNI开发03 前面已经分享了两篇有关Android平台NDK与JNI开发相关的内容.以下列举前面两篇的链接地址,感兴趣的可以再回顾下.那么,这篇继续这个小专 ...

  7. TFS 2015 敏捷开发实践 – 在Kanban上运行一个Sprint

    前言:在 上一篇 TFS2015敏捷开发实践 中,我们给大家介绍了TFS2015中看板的基本使用和功能,这一篇中我们来看一个具体的场景,如何使用看板来运行一个sprint.Sprint是Scrum对迭 ...

  8. Android游戏开发实践(1)之NDK与JNI开发01

    Android游戏开发实践(1)之NDK与JNI开发01 NDK是Native Developement Kit的缩写,顾名思义,NDK是Google提供的一套原生Java代码与本地C/C++代码&q ...

  9. Android游戏开发实践(1)之NDK与JNI开发02

    Android游戏开发实践(1)之NDK与JNI开发02 承接上篇Android游戏开发实践(1)之NDK与JNI开发01分享完JNI的基础和简要开发流程之后,再来分享下在Android环境下的JNI ...

随机推荐

  1. js 常用正则表达式分析详解

    1.整数或者小数:/^((0{1}|[1-9]{1}[0-9]+)\.{1}[0-9]+|[1-9]{1}[0-9]*|0)$/ 分析:分类讨论,如果是小数,则有两种形式   0.111对应的是 0{ ...

  2. cocos2d-x 3.0 使用最新物理引擎的一个源代码实例

    1.碰撞函数參数由两个变成一个了 2.检測不到碰撞.须要设置那三个參数.同一时候还要设置成动态的. body进行设置. 3.初始入口文件也发生了改变. 附录上我近期调试好的cocos2d-x 3.1 ...

  3. DRP之Oracle_11g数据库安装

    不知道大家在安装了Oracle数据库的时候有没有这样或那样的困惑,今天这篇文章就把Oracle数据库的安装过程理一下,作为总结,方便以后的学习. 首先,将下载的两个文件放在一个目录下解压,然后打开文件 ...

  4. android水平循环滚动控件

    CycleScrollView.java package com.example.test; import android.content.Context; import android.graphi ...

  5. Unity MegaFiers 顶点动画

        使用 MegaFiers 插件,能够使得Unity支持顶点动画的播放. 官方视频教程例如以下: 在这里简单測试使用下,环境例如以下: Blender 2.72 Unity 4.5.4 Mega ...

  6. Struts2 拦截器具体配置过程

    拦截器差点儿遍布每个程序中,所以贴出拦截器配置的具体过程,希望可以帮到大家. Struts2 拦截器具体配置过程 <interceptors> <!-- 先定义拦截器 --> ...

  7. Eclipse中的Maven项目报Unbound classpath variable错误

    今天更新了最新版的Eclipse luna 4.4版本号,svn更新了项目后,系统一直报错,经查看在Problems窗体中发现一堆错误.提演示样例如以下:     Unbound classpath ...

  8. java中浮点数的比较(double, float)(转)

    问题的提出:如果我们编译运行下面这个程序会看到什么? public static void main(String args[]){ System.out.println(0.05+0.01); Sy ...

  9. android各种资源的详细解释

    1.字符数组      使用字符串数组资源<string-array>标签定义,在<string-array>包括一些标签<item>数组元素标记.   例如 &l ...

  10. Html A标签中 href 和 onclick用法、区别、优先级别

    原文:Html A标签中 href 和 onclick用法.区别.优先级别 如果不设置 href属性在IE6下面会不响应hover.双击后会选中标签的父容器而非这个一a标签(IE下都存在这一问题). ...