nutch搜索引擎的搭建以及配置

来源:互联网 发布:c语言数组实验报告 编辑:程序博客网 时间:2024/04/29 23:12
 
可以参见另一个:Lucene.Net系列一本文介绍了什么是Lucene,Lucene能做什么

实验环境:

   vmware 6.0<XMLNAMESPACE PREFIX ="O" />

  redhat 5.1

软件环境

  apache-tomcat-6.0.29.tar.gz

  nutch-1.0.tar.gz

  jdk-6u21-linux-i586.bin

 

nutchg简介

 

Nutch的爬虫抓取网页有两种方式,一种方式是IntranetCrawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-web crawling,针对的是整个互联网,使用injectgeneratefetchupdatedb等更底层的命令.本文档介绍IntranetCrawling的基本使用方法.

安装jdk

 # cpjdk-6u21-linux-i586.bin  /usr/java

 # cd  /usr/java

 # chmod +x jdk-6u21-linux-i586.bin

 # ./jdk-6u21-linux-i586

 

# vi /etc/profile     //添加如下的java环境变量

 

JAVA_HOME=/usr/java/jdk1.6.0_21

export JAVA_HOME

PATH=$JAVA_HOME/bin:$PATH

export PATH

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

export CLASSPATH

 

# source /etc/profile    //java环境变量立即生效

# java -version          //测试java环境是否正常,返回版本信息,就表示jdk安装没有问题

 

安装tomcat

#  tarzxvf apache-tomcat-6.0.29.tar.gz  -C/usr/local

#  cd/usr/local/

#  mv apache-tomcat-6.0.29  tomcat

安装nutch

#  tarzxvf nutch-1.0.tar.gz  -C/usr/local

#  cd/usr/local

#  mv nutch-1.0nutch

#  cdnutch

设置Nutch的环境变量

增加NUTCH_JAVA_HOME变量,并将其值设为JDK的安装目录

NUTCH_JAVA_HOME=/usr/java/jdk1.6.0_21

export NUTCH_JAVA_HOME


Nutch抓取网站页面前的准备工作

 

Nutch的安装目录中建立一个名为url.txt的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页.

这里写入国内比较有名的站点 

 

编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
   
  # accept hosts inMY.DOMAIN.NAME
  +^http://([a-z0-9]*\.)*com/
   +^http://([a-z0-9]*\.)*cn/
   +^http://([a-z0-9]*\.)*net/

 

解决搜索动态内容的问题
  需要注意在conf下面的2个文件:regex-urlfilter.txtcrawl-urlfilter.txt
 # skipURLs containing certain characters as probable queries, etc.
   
-[?*!@=]
   
这段意思是跳过在连接中存在? * ! @ = 的页面,因为默认是跳过所以,在动态页中存在?一般

按照默认的是不能抓取到的.可以在上面2个文件中都修改成:

# skip URLs containing certaincharacters as probable queries, etc.
  
  #-[?*!@=]   //前面加上注释.

另外增加允许的一行
    #accept URLs containing certain characters as probable queries,etc.
    
+[?=&]
   
意思是抓取时候允许抓取连接中带 ? =& 这三个符号的连接
   注意:两个文件都需要修改,因为NUTCH加载规则的顺序是crawl-urlfilter.txt->

    regex-urlfilter.txt

 

编辑conf/nutch-site.xml文件,configuration中间加入一下内容

 

   

       http.agent.name

       sxit  nutchagent

   

   

       http.agent.version

       1.0

   

运行Crawl命令抓取网站内容

/usr/local/nutch/bin/nutch crawl/usr/local/nutch/url.txt  -dir/usr/local/nutch/sxit  -depth 3  -threads 4 >& /usr/loca/nutch/crawl.log

等待大约一段时间后,程序运行结束.会发现在nutch目录下被创建了一个名为sxit的文件夹,同时还生成一个名为crawl.log的日志文件.利用这一日志文件,我们可以分析可能遇到的任何错误.另外,在上述命令的参数中,dir指定抓取内容所存放的目录,depth表示以要抓取网站顶级网址为起点的爬行深度,threads指定并发的线程数.

使用Tomcat进行搜索测试

 

nutch目录的nutch-1.0.war复制到tomcat\webapps,这里需要启动下tomcat,然后就在webapps下面生成一个nutch-1.0的文件夹,打开 nutch-1.0\WEB-INF\classes下的nutch-site.xml文件,

//由于这里是最新的版本,原来这个配置文件的内容都删掉,添加如下的内容

 

  
  

  


   
    searcher.dir
    /usr/local/nutch/sxit   //这里为刚才
抓取内容所存放的目录
   
  
  
启动Tomcat,打开浏览器在地址栏中输入:http://IP:8080,/nutch-1.0,就可以看到搜索页面了.、
在文本框中输入关键字,就可以进行搜索了.不过用户在使用时会发现,对于英文单词的搜索一切正常,而当要搜索中文词语时会出现乱码.其实这个问题是Tomcat设置的问题,解决办法是修改tomcat\conf下的server.xml文件,将其中的Connector部分改成如下形式即可:
   
  
              enableLookups="false" redirectPort="8443" acceptCount="100"
              connectionTimeout="20000"disableUploadTimeout="true" 
              URIEncoding="UTF-8"useBodyEncodingForURI="true"/>
<XMLNAMESPACE PREFIX ="V"/>

nutch的分页功能

# cd /usr/local/apache-tomcat-6.0.29/webapps/nutch-1.0

 

# vi search.jsp

 

查找int hitsPerSite=后面的值改成0,

然后在这个jsp文件的末尾增加如下的代码:

 

 


         
         
               
            
 

               
原创粉丝点击