一、Nutch 介绍(来自百度百科)
Nutch是一个由Java实现的,刚刚诞生开放源代码(open-source)的web搜索引擎。尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然不利于广大Internet用户.
Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的费用, 而不是根据它们本身的价值进行排序.与它们不同, Nucth没有什么需要隐瞒, 也没有动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果。
Nutch目前最新的版本为version1.4。Nutch致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch必须能够做到:
- 每个月取几十亿网页
- 为这些网页维护一个索引
- 对索引文件进行每秒上千次的搜索
- 提供高质量的搜索结果
- 以最小的成本运作
二、Nutch安装与运行
2.1 环境配置
- 安装环境:Linux Ubuntu 11.10
- 安装环境:Linux Ubuntu 11.10
- 配置环境:jdk1.70_03
- 相关软件包:nutch 1.4
2.2 配置java环境
- 下载jdk:http://www.oracle.com/technetwork/java/javase/downloads/index.html
- 解压到/usr下,然后配置环境变量:编辑 ~/.bashrc文件,加入export JAVA_HOME=/usr/your_jdk/,保存退出后用source ~/.bashrc命令更新。
- 可用java -version 查看是否配置成功。
2.3 配置Nutch
- 下载nutch:http://www.apache.org/dyn/closer.cgi/nutch/
- 解压到/usr/local下,然后进入nutch_home/runtime/local下运行bin/nutch 看是否成功运行。
- 正常情况如下显示:
chmod +x bin/nutch
4. 配置conf/nutch-site.xml(local目录下),在<configuration>标签中写入如下子标签:
<property><name>http.agent.name</name>
<value>My Nutch Spider</value>
</property>
5. 在local下新建urls文件夹,并在其中编辑文本文件,文件名自拟,我们以网易为例进行搜索,所以编写如下内容:
http://www.163.com
6. 配置编辑文件conf/regex-urlfilter.txt,将
# accept anything else+.
中的+.改为 +^http://([a-z0-9]*\.)*163.com/ (PS:这里的正则表达式一定不要出错,否则爬虫失败!!)
2.4 运行命令,进行测试
在local下运行命令:bin/nutch crawl urls -dir crawl -depth 3 -topN 5
其中:crawl urls,urls为我们所指定的爬虫目标网站
-dir crawl ,对结果建立索引文件,目录为crawl文件夹
-depth 3, 规定拓扑树的最大深度
-topN 5, 规定拓扑树的最大广度
三、测试结果评估
本次测试遇到的结果较多,主要集中在环境变量搭建和nutch配置方面。
1. 对于没有java_jdk的系统,应先做好jvm环境变量工作,可配置/etc/profile文件
2. 配置regex-urlfilter.txt时,正则表达式一定正确,否则url会被屏蔽
3. 此次配置测试只是对nutch的初步配置,目的是建立index,下一步主要目标是利用tomcat或hadoop对所建立起的index进行检索。
四、构建搜索引擎
对于搜索引擎的建立,这只是一小步。要建立大型海量数据的搜索,还需将nutch中的hadoop构架进行优化处理,并要对集群管理监控做到自动处理。同时,需要分布式存储系统对index的生成和查询提供快速、可靠的保障。
基于目前为初步涉足搜索领域,所以只是浅谈了今后需要进行的工作,不正之处,还望多多指教。
五、参考文档
1. Apache Nutch:http://nutch.apache.org/
2. Nutch Tutorial:http://wiki.apache.org/nutch/NutchTutorial
3. 云计算(第二版)刘鹏