utch 是一个刚刚诞生开放源代码 (open-source) 的 web 搜索引擎 .
尽管 Web 搜索是漫游 Internet 的基本要求 , 但是现有 web 搜索引擎的数目却在下降 . 并且这很有可能进一步演变成为一个公司垄断了几乎所有的 web 搜索为其谋取商业利益 . 这显然不利于广大 Internet 用户 .
Nutch为我们提供了 这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nucth没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果。
Nutch 是一个应用程序,是一个网络蜘蛛 ,它会在网站上自动爬行,抓取网页。Nutch 的爬虫有两种方式:
爬行企业内部网(Intranet crawling)。针对少数网站进行。用 crawl 命令。
爬行整个互联网。 使用低层的 inject, generate, fetch 和 updatedb 命令。具有更强的可控制性。
在我的试用安装时,对安吉高级中学网站(http://www.angao.com)进行了抓取,进行了调试。花了我半天时间,总算行了,大家可以查看演示网址:
http:// http://9ding.xicp.net/zh/ 在里面进行搜索下,感受Nutch的强大功能。
在安装时,前提条件是在你的计算机中已安装好JDK,Tomcat,并已设置好环境变量等。由于Nutch是一个在Linux下运行的应用软件,如果想在windows平台下运行,需安装cygwin软件,这是一个模块Lunux系统环境的软件,以便能正常运行Nutch脚本。
具体要求:
已安装好java1.4版本以上,Tomcat4版本以上,有一个调试好的JSP运行环境。
设置系统变量 NUTCH_JAVA_HOME,由于我的java程序安装在d:/jsp/j2se5,所以在我的机器上把变量设置为NUTCH_JAVA_HOME=d:/jsp/j2se5,在winXP系统中,在我的电脑->属性->高级 标签下->环境变量->双击设置。
安装cygwin软件,这是一个Linux环境模拟软件。
有一个比较大的硬盘空间,推荐4G以上。
下载Nutch,进行安装。
附软件下载地址:
j2SE5.0 http://java.sun.com/javase/downloads/index.html
Tomcat5.5 http://tomcat.apache.org/download-55.cgi
Cygwin http://www.cygwin.com/
Nutch http://lucene.apache.org/nutch/
安装步骤:
1、
由于大多数使用的都是windows系统,所以必需先安装Cygwin软件。
我也是这样。从cygwin 网站中下载来的是cygwin_setup.exe安装文件,直接双击就可以安装了,安装时有三种方式,我选择的是在线安装,把所有的部件全都安装了。这 个安装方式比较慢,我花了3个多小时。安装完毕后,在桌面上出现了cygwin的快捷方式,直接双击该图标,在命令行中输入:
cd /cygdrive/d/jsp 回车
再输入命令ls(这是个Linux命令,作用相当于DOS下的dir命令),窗口显示d:/jsp下所有的目录及文件。
提示:由于我所有的jsp相关文件都是安装在d:/jsp目录下,所以这里为了演示,输入命令为
cd /cygdrive/d/jsp ,这里d/jsp可以替换为你自己的文件目录。如果你能显示出目录文件,就说明cygwin 已安装成功了。
设置
系统变量 NUTCH_JAVA_HOME,设置好后,需重启电脑。
2、抓取网站内容前的准备工作
1) 把下载后的nutch-0.7.2.tar.gz解压缩到你的指定目录下,我是放在D:/jsp/sousuo/nutch目录。建立一个文本文件,内容 是你要抓取的网站地址,我的内容是http://www.angao.com,然后保存到nutch的安装目录下。文件名取为urls.txt。
2)打开Nutch安装目录下,修改conf子目录下的crawl-urlfilter.txt文件,在最下面部分改为
# accept hosts in MY.DOMAIN.NAME
#+^http://([a-z0-9]*/.)*MY.DOMAIN.NAME/
+^http://www.angao.com/ ##这里改为你要抓取的网站地址,其实这里是配置一个##
##取过滤器,用来配置网站的哪部分内容是你想要抓取的##
# skip everything else
修改好后,保存。
3),在你的nutch安装目录下建立一个crawled子目录,用来存放网站抓取后的内容及索引,目录名是可以任意的。
3、运行Crawl命令抓取网站内容
双击桌面cygwin图标,打开命令窗口。输入
cd /cygdriver/d/jsp/sousuo/nutch 回车,
此时目录转到d:/jsp/sousuo/nutch下,这也是我的nutch安装目录,如果你的nutch安装在其它目录,则命令cd /cygdriver/d/jsp/sousuo/nutch中的d/jsp/sousuo/nutch部分改为你的nutch安装路径即可。
然后再输入
bin/nutch crawl urls.txt –dir crawled –depth 3 –threads 4 >& crawl.log
稍等几分钟,程序抓取过程结束,在你的crawled子目录下,将会看到抓取的内容。
下面解释下该命令:
crawl 命令有几个参数,它们是:
-dir 指定抓取后内容及索引的存放目录
-depth 指定网站抓取的层数
-delay 指定连接目标网站延迟时间
-threads 指定程序运行的线程数,以提高抓取速度。
在命令bin/nutch crawl urls.txt –dir crawled –depth 3 –threads 4 >& crawl.log中
urls.txt 是开头建立好的,内容是目录网址,>&crawl.log是指定记录文件,在抓取过程中的错误及其它内容都会记在此文件中。 bin/nutch crawl部分是运行nutch安装目录下的bin子目录下的nutch脚本 crawl是命令名。
4、使用Tomcat进行搜索测试
把nutch安装目录下的nutch-0.7.2.war文件拷到Tomcat的webapps目录下。当war展开后,改名为nutch。修改webapps/nutch/WEB-INF/classes目录下的nutch-site.xml文件,改成如下内容
<nutch-conf>
<property>
<name>searcher.dir</name>
<value>D:/jsp/sousuo/nutch/crawled</value>
</property>
</nutch-conf>
在这里value标签就是指定你搜索的目录,这个目录,也就是开头你抓取后存放抓取内容及索引的目录。<value>D:/jsp/sousuo/nutch/crawled</value>部分,你可以自由修改。
接下来 修改tomcat/conf下的server.xml文件,将其中的Connector部分改成如下形式即可:
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
这里添加了URIEncoding="UTF-8" useBodyEncodingForURI="true"语句,目的是为了解决汉字编码问题,以免在进行中文搜索时,出现乱码。
最后可以启动tomcat,在IE地址栏中输入http://localhost/nutch , 即可,出现nutch的搜索界面,你现在马上就可以开始搜索了。
你可以打开http://9ding.xicp.net ,进行搜索测试。这是我的演示程序。