nutch搜索引擎的搭建以及配置
2013-09-11 16:01
423 查看
可以参见另一个: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的爬虫抓取网页有两种方式,一种方式是Intranet
Crawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-web crawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令.本文档介绍Intranet
Crawling的基本使用方法.
# cp
jdk-6u21-linux-i586.bin /usr/java
# cd /usr/java
# chmod +x
jdk-6u21-linux-i586.bin
# ./
jdk-6u21-linux-i586
# vi /etc/profile
//添加如下的java环境变量
J***A_HOME=/usr/java/jdk1.6.0_21
export J***A_HOME
PATH=$J***A_HOME/bin:$PATH
export PATH
CLASSPATH=$J***A_HOME/lib/tools.jar:$J***A_HOME/lib/dt.jar:$CLASSPATH
export CLASSPATH
# source /etc/profile
//让java环境变量立即生效
# java -version
//测试java环境是否正常,返回版本信息,就表示jdk安装没有问题
# tar
zxvf apache-tomcat-6.0.29.tar.gz -C
/usr/local
# cd
/usr/local/
# mv
apache-tomcat-6.0.29
tomcat
# tar
zxvf nutch-1.0.tar.gz -C
/usr/local
# cd
/usr/local
# mv nutch-1.0
nutch
# cd
nutch
增加NUTCH_J***A_HOME变量,并将其值设为JDK的安装目录
NUTCH_J***A_HOME=/usr/java/jdk1.6.0_21
export NUTCH_J***A_HOME
Nutch抓取网站页面前的准备工作
在Nutch的安装目录中建立一个名为url.txt的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页.
这里写入国内比较有名的站点
编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
# accept hosts in
MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*com/
+^http://([a-z0-9]*\.)*cn/
+^http://([a-z0-9]*\.)*net/
解决搜索动态内容的问题
需要注意在conf下面的2个文件:regex-urlfilter.txt,crawl-urlfilter.txt
# skip
URLs containing certain characters as probable queries, etc.
-[?*!@=]
这段意思是跳过在连接中存在? * ! @ = 的页面,因为默认是跳过所以,在动态页中存在?一般
按照默认的是不能抓取到的.可以在上面2个文件中都修改成:
# skip URLs containing certain
characters 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 nutch
agent
http.agent.version
1.0
/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"
[/b]
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
/>[/b] <
XMLNAMESPACE PREFIX ="V"
/>
webapps/nutch-1.0
# vi search.jsp
查找int hitsPerSite
把=后面的值改成0,
然后在这个jsp文件的末尾增加如下的代码:
系列一本文介绍了什么是Lucene,Lucene能做什么
实验环境:
vmware 6.0<XMLNAMESPACE PREFIX ="O" />
redhat 5.1
软件环境
apache-tomcat-6.0.29.tar.gznutch-1.0.tar.gz
jdk-6u21-linux-i586.bin
nutchg简介
Nutch的爬虫抓取网页有两种方式,一种方式是Intranet
Crawling,针对的是企业内部网或少量网站,使用的是crawl命令;另一种方式是Whole-web crawling,针对的是整个互联网,使用inject、generate、fetch和updatedb等更底层的命令.本文档介绍Intranet
Crawling的基本使用方法.
安装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环境变量
J***A_HOME=/usr/java/jdk1.6.0_21
export J***A_HOME
PATH=$J***A_HOME/bin:$PATH
export PATH
CLASSPATH=$J***A_HOME/lib/tools.jar:$J***A_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.0
nutch
# cd
nutch
设置Nutch的环境变量
增加NUTCH_J***A_HOME变量,并将其值设为JDK的安装目录NUTCH_J***A_HOME=/usr/java/jdk1.6.0_21
export NUTCH_J***A_HOME
Nutch抓取网站页面前的准备工作
在Nutch的安装目录中建立一个名为url.txt的文本文件,文件中写入要抓取网站的顶级网址,即要抓取的起始页.
这里写入国内比较有名的站点
编辑conf/crawl-urlfilter.txt文件,修改MY.DOMAIN.NAME部分:
# accept hosts in
MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*com/
+^http://([a-z0-9]*\.)*cn/
+^http://([a-z0-9]*\.)*net/
解决搜索动态内容的问题
需要注意在conf下面的2个文件:regex-urlfilter.txt,crawl-urlfilter.txt
# skip
URLs containing certain characters as probable queries, etc.
-[?*!@=]
这段意思是跳过在连接中存在? * ! @ = 的页面,因为默认是跳过所以,在动态页中存在?一般
按照默认的是不能抓取到的.可以在上面2个文件中都修改成:
# skip URLs containing certain
characters 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 nutch
agent
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"
[/b]
URIEncoding="UTF-8"
useBodyEncodingForURI="true"
/>[/b] <
XMLNAMESPACE PREFIX ="V"
/>
nutch的分页功能
# cd /usr/local/apache-tomcat-6.0.29/webapps/nutch-1.0
# vi search.jsp
查找int hitsPerSite
把=后面的值改成0,
然后在这个jsp文件的末尾增加如下的代码: