简介
Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。尽管Web搜索是漫游Internet的基本要求, 但是现有web搜索引擎的数目却在下降. 并且这很有可能进一步演变成为一个公司垄断了几乎所有的web搜索为其谋取商业利益.这显然 不利于广大Internet用户.
Nutch为我们提供了这样一个不同的选择. 相对于那些商用的搜索引擎, Nutch作为开放源代码 搜索引擎将会更加透明, 从而更值得大家信赖. 现在所有主要的搜索引擎都采用私有的排序算法, 而不会解释为什么一个网页会排在一个特定的位置. 除此之外, 有的搜索引擎依照网站所付的 费用, 而不是根据它们本身的价值进行排序. 与它们不同, Nutch没有什么需要隐瞒, 也没有 动机去扭曲搜索的结果. Nutch将尽自己最大的努力为用户提供最好的搜索结果.
Nutch目前最新的版本为version v2.3。
目标
Nutch 致力于让每个人能很容易, 同时花费很少就可以配置世界一流的Web搜索引擎. 为了完成这一宏伟的目标, Nutch必须能够做到:
* 每个月取几十亿网页
* 为这些网页维护一个索引
* 对索引文件进行每秒上千次的搜索
* 提供高质量的搜索结果
Nutch由爬虫crawler和查询searcher组成。Crawler主要用于从网络上抓取网页并为这些网页建立索引。Searcher主要利用这些索引检索用户的查找关键词来产生查找结果。两者之间的接口是索引,所以除去索引部分,两者之间的耦合度很低。
Crawler和Searcher两部分尽量分开的目的主要是为了使两部分可以分布式配置在硬件平台上,例如将Crawler和Searcher分别放在两个主机上,这样可以提升性能。
优点
1、透明度
Nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度,这样的索引结果并不是和站点内容相关的。因此Nutch对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。
2、扩展性
你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的,他可以被很好的客户订制并集成到你的应用程序中。使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。
3、对搜索引擎的理解
我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。在写Nutch的过程中,从学院派和工业派借鉴了很多知识:比如:Nutch的核心部分目前已经被重新用 Map Reduce 实现了。Map Reduce 是一个分布式的处理模型,最先是从 Google 实验室提出来的。并且 Nutch 也吸引了很多研究者,他们非常乐于尝试新的搜索算法,因为对Nutch 来说,这是非常容易实现扩展的。
环境和工具
安装JDK
接着配置JDK环境变量,如果是普通用户登录,使用“vi /etc/profile”命令,编辑"/etc/profile"文件,如果是root用户登录,使用“vi .bash_profile”命令,编辑".bash_profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容。代码为:
# set java environment
export JAVA_HOME=/usr/java/jdk1.8.0_77
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
保存并退出,执行下面命令使其配置立即生效。
source /etc/profile
安装tomcat
# set tomcat environment
export CATALINA_HOME=/usr/tomcat
export CATALINA_BASE=/usr/tomcat
export PATH=$PATH:$ CATALINA_HOME /bin
startup.sh
最后在浏览器中输入 localhost:8080,验证tomcat安装完成
安装nutch
我们把Nutch安装在"/home/"下面。用下面命令进行解压和重名为nutch。
tar -zxvf apache-nutch-1.4-bin.tar.gz
添加Nutch的环境变量,普通用户要在"/etc/profile"文件中设置,root用户要在"/etc/profile"文件中设置。
# set nutch environment
export NUTCH_HOME=/home/hadoop/nutch
export PATH=$PATH:$ NUTCH _HOME /runtime/local/bin
添加完之后用"source"命令使其立即生效。
然后在输入"nutch"命令测试是否配置成功,结果出现下面错误,当然这个错误网上说不一定出现。
如果我们查看"/home/hadoop/nutch/runtime/local/nutch"这个文件时发现没有执行权限。用下面命令添加执行权限。
chmod +x nutch
当添加完权限后,输入nutch命令,如果控制台出现如下信息,说明安装完成: