Nuch 1.2 +tomcat window下 搭建简单的搜索引擎

来源:互联网 发布:网络阅卷注意事项 编辑:程序博客网 时间:2024/06/11 09:43



一、   实验目的

利用开源工具,构建一个简单搜索引擎系统

二、   实验环境

系统平台:Windows

爬虫、索引:Nutch-1.2

WEB服务器界面:Tomcat-7.0.61

中文分词工具:IKAnalyzer3.2.8

       windows平台上运行的类UNIX模拟环境: Cgywin:

JDK版本:1.7.0_45

三、   实验过程

 

1.工具安装

安装过程不详述,唯一要注意的就是环境变量的设置。只有把环境变量设置正确,才能保证后面的实验进行顺利。

· nutch的配置,将nutch解压缩(.gz后缀,可以直接用winRar解压)后将文件夹nutch-1.2(包含文件夹下所有文件)放置到cygwin/home下;

·打开cygwin,在cygwin环境下进入nutch-1.2目录下(cd /cygdrive/I/cygwin/home/nutch-1.2),使用命令bin/nutch进行测试,结果正常,如下图

 

2.nutch配置

 

·设置系统变量NUTCH_JAVA_HOME
它的值就是java的安装目录,例如:C:\Java\jdk1.7.0_17

设置需要抓取的网站主域名。
在Nutch-1.2的安装目录下建立一个名为urls的文件夹,并在文件夹下建立url.txt文件,在文件中写入:如http://www.sohu.com/(即要抓取网站的网址,注意最后要加斜杠)。

·设置网站过滤规则。
编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分。

# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
改为:
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*souhu.com/

·设置代理信息。
编辑conf/nutch-site.xml文件。在<configuration>和</configuration>之间添加如下内容:
    <property>

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

  <value>mynutch</value>

  <description>spider</description>

</property>

<property>

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

   <value>1.2</value>

</property>

 <property>

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

  <value>MyEmail</value>

  <description>

  </description>

</property>

·设置代理名
编辑nutch-1.2\conf\nutch-default.xml文件,找<name>http.agent.name</name>,然后随便设置Value值。例如:

<property>

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

<value>test</value>

</property>

 

·运行crawl爬虫命令抓取内容

运行cygwin后,
a)首先切换进入nutch-1.2的目录;
b)运行命令:export LANG="zh_CN.GBK"(设置linux环境变量)
c)运行命令:bin/nutch crawlurls/url.txt -dir 5sing -depth 4 -threads 5 -topN 100 >&logs/log1.log


crawl 是nutch检索数据命令,后面跟上要检索的URL文件;

-dir指定抓取内容所存放的目录;

-depth表示以要抓取网站顶级网址为起点的爬行深度;

-threads指定并发的线程数;

-topN抓取时每页的最大抓取链接。

-最后是指明日志文件

 

2.tomcat上运行nutch进行搜索测试

 

1)把nutch-1.2.war拷贝到Tomcat//webapps/下面,重启tomcat,这步是为了使tomcat展开nutch-1.2.war

2)修改webapps/ nutch-1.2/WEB-INF/classes/nutch-site.xml文件如下:

 

 <?xmlversion="1.0"?>
<?xml-stylesheet type="text/xsl"href="configuration.xsl"?>

<!-- Put site-specificproperty overrides in this file. -->

<configuration>
<property>
<name>searcher.dir</name>
<value>c:/cygwin/home/nutch-1.2/crawled</value>
</property>
</configuration>

 

3)为了支持中文的搜索,修改Tomcat/conf/server.xml。找到对应的地方修改成

connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"useBodyEncodingForURI="true"/>

 

4)在浏览器中输入http://localhost:8080/nutch-1.2/

 

5)由下图搜索结果看出NUTCH本身是按字搜索的,所以还要添加中文分词插件


3.为Nutch添加中文分词工具IKAnalyzer

          

 请看上一篇博文 http://blog.csdn.net/u011941451/article/details/46289149

 

 

 

 

四、   二次开发

1.为了达到实验效果对抓取网站进行增加,共爬取了5个主流的音乐网站,完成一个对主流音乐网站的站内搜索 (抓取用时51分钟)

http://y.qq.com/

http://www.xiami.com/

http://5sing.kugou.com/

http://music.163.com/

http://www.yinyuetai.com

2.  对nutch主页面进行了重新优化,使其变得美观


3.  show all hits修改

(nutch默认的页面hits有重复,最后一页出现showallhits的按钮,原来还以为是底层抓取重复,后来才发现是网页上的问题。不知道hitsPerSite这个变量到底是起什么作用的,为啥还有个showallhits,解决方法如下)

在search.jsp中修改下面的语句

Int hitsPerSite = 2;   2改为0

 

4.  分页功能

默认情况下,搜索引擎Nutch在查询搜索结果时,只有下一页功能。主要是Nutch采用了“80/20”原则,即返回前面最相关的记录,而基本上的用户都不会去关心第三页以后的内容

在修改过程中,实现了功能但分页按钮出现乱码,暂时还没有解决

 

五、   Nutch相关测试命令

1. bin/nutchorg.apache.nutch.searcher.NutchBean关键字   进行查询测试

2. bin/nutchreaddb musics/crawldb –stats                     查看抓取总数

  

3.上命令加 –sort  展开status 查看域名信息 如下


六、   实验错误解决

 

1.爬虫抓取时: Exception in thread "main" java.io.IOException: Jobfailed!

 

解决方法:在cygwin中输入:exportLANG="zh_CN.GBK" ,而后回车 其实就是设置下linux的环境变量

 

2.No URLs to fetch - check your seed list and URL filters.

 

编辑Nutch-1.2\conf\Nutch-default.xml文件,找http.agent.name,然后随便设置Value值。例如:

http.agent.name

test

 

3.Exception in thread "main"org.apache.hadoop.mapred.FileAlreadyExistsException

: Output directory crawl/index already exists!

两次爬虫抓取内容储存在同一个文件夹 导致错误

 

七、   总结

在Nutch以及其他工具的配置上花了很长时间,主要是在发现错误和解决错误上,中间也从头开始整理过一次。同时在抓取过程中,发现同样的抓取语句,对不同网页抓取效果不同,甚至有几个网址只抓取到很少的网页,如新浪,网易云音乐。具体问题找了很久还没有找出来。


参考资料  http://blog.sina.com.cn/s/blog_8c7c21340100zemu.html

                 http://www.cnblogs.com/streamhope/archive/2011/07/27/2118408.html     包含一系列开发过程   界面设计 二次开发的参考

0 0
原创粉丝点击