zoukankan      html  css  js  c++  java
  • Nutch+Lucene搜索引擎开发实践

    网络拓扑

                                                              

    图 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

  • 相关阅读:
    使用ANY、Some或All关键字
    Exists 和 Not Exists
    in和not in
    斐波那契数列 迭代与递归效率对比
    欧几里得算法
    递归
    字符长串破解密码
    对return函数的认识
    global与nonlocal关键字总结
    闭包
  • 原文地址:https://www.cnblogs.com/hrhguanli/p/4048218.html
Copyright © 2011-2022 走看看