Browsing articles tagged with " nutch"
十 1, 2008
Fred

ubuntu下lucene和nutch的配置

这篇是对上面配置的继续
1.安装lucene
wget http://apache.mirror.phpchina.com/lucene/java/lucene-2.3.2.tar.gz
不是lucene-2.3.2-src.tar.gz哦,这个无lucene-demos-2.3.2.jar
在目录下:
tar zxvf lucene-2.3.2.tar.gz
mv lucene-2.3.2 /usr/share

查看解压文件里面的build.txt里面有lucene配置的的基本步骤,根据提示,ant是必须的,我们现在要把ant的安装补上(eclipse下有ant,如果在eclipse下调试的话好像不需要再安装了就。具体的不太清楚也)
##CONTINUE##
2.安装ant

http://ant.apache.org/bindownload.cgi

ant是一个基于JAVA的自动化脚本引擎,脚本格式为XML。除了做JAVA编译相关任务外,ANT还可以通过插件实现很多应用的调用,比make脚本来说还要好维护一些。

wget http://apache.mirror.phpchina.com/ant/binaries/apache-ant-1.7.1-bin.tar.gz

在对应目录下:
tar zxvf apache-ant-1.7.1-bin.tar.gz

mv apache-ant-1.7.0 /usr/share/

gedit /etc/profile

加上
ANT_HOME=/usr/share/apache-ant-1.7.1
export ANT_HOME
编辑
PATH=$PATH:$JAVA_HOME/bin:$ANT_HOME/bin

3 继续设置lucene
再修改profile
gedit /etc/profile
增加
LUCENE_HOME=/usr/share/lucene-2.3.2
CLASSPATH=.:${JAVA_HOME}/lib/dt.jar:${JAVA_HOME}/lib/tools.jar:${LUCENE_HOME}/lucene-core-2.3.2.jar:${LUCENE_HOME}/lucene-demos-2.3.2.jar

4.测试lucene demo
在lucene目录下,
cd ./src/demo
java org.apache.lucene.demo.IndexFiles /usr/share/lucene-2.3.2/docs

如果路径正确会出现如下:



adding /usr/share/lucene-2.3.2/docs/demo.pdf
adding /usr/share/lucene-2.3.2/docs/demo2.html
adding /usr/share/lucene-2.3.2/docs/gettingstarted.html
adding /usr/share/lucene-2.3.2/docs/fileformats.pdf
adding /usr/share/lucene-2.3.2/docs/scoring.html
adding /usr/share/lucene-2.3.2/docs/linkmap.html
adding /usr/share/lucene-2.3.2/docs/lucene-sandbox/index.html
adding /usr/share/lucene-2.3.2/docs/lucene-sandbox/index.pdf
adding /usr/share/lucene-2.3.2/docs/queryparsersyntax.pdf
adding /usr/share/lucene-2.3.2/docs/linkmap.pdf
adding /usr/share/lucene-2.3.2/docs/demo4.html
adding /usr/share/lucene-2.3.2/docs/benchmarktemplate.xml
adding /usr/share/lucene-2.3.2/docs/index.pdf
Optimizing…
17869 total milliseconds
并生成index文件夹。
然后就可以搜索了,
输入以下命令就会出现搜索提示符。
java org.apache.lucene.demo.SearchFiles
按提示输入即可。

如果要在tomcat下测试lucene demo可按如下操作:
4.1.将lucene目录下的/src/jsp目录复制到tomcat的webapps目录下,该名为luceneweb
4.2.复制lucene-core-2.3.2.jar和lucene-demos-2.3.2.jar到luceneweb/WEB_INF/lib目录下(或将luceneweb.war复制到tomcat的webapps目录下)没仔细试,好像不行

4.3.将index目录复制到luceneweb目录下
4.4.编辑luceneweb下的configuration.jsp,设置String indexLocation = “/usr/share/tomcat6/webapps/luceneweb/index”;String appfooter也可以自行设置
4.5.重启tomcat,访问http://localhost:8080/luceneweb/,就可以看到lucene demo的界面了,可以试着搜索下看看~

5.安装Nutch
可以去Apache的官方网页http://www.apache.org/dyn/closer.cgi/lucene/nutch/ 下载最新版的Nutch,目前最新版是nutch-0.9
解压缩到目标文件夹即可。
Nutch和tomcat,eclipse的是接下来要做的工作了

九 19, 2008
Fred

Nutch介绍[转自Nutch中文网站]

Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。可以为什么我们需要建立自己的搜索引擎呢?毕竟我们已经有google可以使用。这里我列出3点原因: ##CONTINUE##

透明度:Nutch是开放源代码的,因此任何人都可以查看他的排序算法是如何工作的。商业的搜索引擎排序算法都是保密的,我们无法知道为什么搜索出来的排序结果是如何算出来的。更进一步,一些搜索引擎允许竞价排名,比如百度,这样的索引结果并不是和站点内容相关的。因此 Nutch 对学术搜索和政府类站点的搜索来说,是个好选择。因为一个公平的排序结果是非常重要的。
对搜索引擎的理解:我们并没有google的源代码,因此学习搜索引擎Nutch是个不错的选择。了解一个大型分布式的搜索引擎如何工作是一件让人很受益的事情。在写Nutch的过程中,从学院派和工业派借鉴了很多知识:比如:Nutch的核心部分目前已经被重新用 Map Reduce 实现了。看过开复演讲的人都知道 Map Reduce 的一点知识吧。Map Reduce 是一个分布式的处理模型,最先是从 Google 实验室提出来的。你也可以从下面获得更多的消息。

http://www.domolo.com/bbs/list.asp?boardid=29

http://domolo.oicp.net/bbs/list.asp?boardid=29

并且 Nutch 也吸引了很多研究者,他们非常乐于尝试新的搜索算法,因为对Nutch 来说,这是非常容易实现扩展的。
扩展性:你是不是不喜欢其他的搜索引擎展现结果的方式呢?那就用 Nutch 写你自己的搜索引擎吧。 Nutch 是非常灵活的:他可以被很好的客户订制并集成到你的应用程序中:使用Nutch 的插件机制,Nutch 可以作为一个搜索不同信息载体的搜索平台。当然,最简单的就是集成Nutch到你的站点,为你的用户提供搜索服务。
Nutch 的安装分为3个层次:基于本地文件系统,基于局域网,或者基于 internet 。不同的安装方式具有不同的特色。比如:索引一个本地文件系统相对于其他两个来说肯定是要稳定多了,因为没有 网络错误也不同缓存文件的拷贝。基于Internet 的搜索又是另一个极端:抓取数以千计的网页有很多技术问题需要解决:我们从哪些页面开始抓取?我们如何分配抓取工作?何时需要重新抓取?我们如何解决失效的链接,没有响应的站点和重复的内容?还有如何解决对大型数据的上百个并发访问?搭建这样一个搜索引擎是一笔不小的投资呀!在 ” Building Nutch: Open Source Search,” 的作者 Mike Cafarella 和 Doug Cutting 总结如下::

… 一个具有完全功能的搜索系统:1亿页面索引量,每秒2个并发索引,需要每月800美元。10亿页面索引量,每秒50个页面请求,大概需要每月30000美元。

这篇文章将为你演示如何在中等级别的网站上搭建Nutch。第一部分集中在抓取上。Nutch的抓取架构,如何运行一个抓取程序,理解这个抓取过程产生了什么。第二部分关注搜索。演示如何运行Nutch搜索程序。以及如何订制Nutch 。

Nutch Vs. Lucene

Nutch 是基于 Lucene的。Lucene为 Nutch 提供了文本索引和搜索的API。一个常见的问题是;我应该使用Lucene还是Nutch?最简单的回答是:如果你不需要抓取数据的话,应该使用Lucene。常见的应用场合是:你有数据源,需要为这些数据提供一个搜索页面。在这种情况下,最好的方式是直接从数据库中取出数据并用Lucene API建立索引。中文用户,可以参考 WebLucene 或者 车东 的一些列文章。如果需要中文分词帮助还可以联系作者。 http://domolo.oicp.net/bbs/list.asp?boardid=24 Erik Hatcher 和 Otis Gospodnetić’s 的 Lucene in Action 中详细讲述了这个过程。Nutch 适用于你无法直接获取数据库中的网站,或者比较分散的数据源的情况下使用。

架构

总体上Nutch可以分为2个部分:抓取部分和搜索部分。抓取程序抓取页面并把抓取回来的数据做成反向索引,搜索程序则对反向索引搜索回答用户的请求。抓取程序和搜索程序的接口是索引。两者都使用索引中的字段。()

实际上搜索程序和抓取程序可以分别位于不同的机器上。()

这里我们先看看Nutch的抓取部分。

抓取程序:

抓取程序是被Nutch的抓取工具驱动的。这是一组工具,用来建立和维护几个不同的数据结构: web database, a set of segments, and the index。下面我们逐个解释上面提到的3个不同的数据结构。

The web database, 或者WebDB, 是一个特殊存储数据结构,用来映像被抓取网站数据的结构和属性的集合。WebDB 用来存储从抓取开始(包括重新抓取)的所有网站结构数据和属性。WebDB 只是被 抓取程序使用,搜索程序并不使用它。WebDB 存储2种实体:页面 和 链接。页面 表示 网络上的一个网页,这个网页的Url作为标示被索引,同时建立一个对网页内容的MD5 哈希签名。跟网页相关的其它内容也被存储,包括:页面中的链接数量(外链接),页面抓取信息(在页面被重复抓取的情况下),还有表示页面级别的分数 score 。链接 表示从一个网页的链接到其它网页的链接。因此 WebDB 可以说是一个网络图,节点是页面,链接是边。

Segment 是 网页 的集合,并且它被索引。 Segment 的 Fetchlist 是抓取程序使用的 url 列表 , 它是从 WebDB中生成的。Fetcher 的输出数据是从 fetchlist 中抓取的网页。Fetcher 的输出数据先被反向索引,然后索引后的结果被存储在segment 中。 Segment 的生命周期是有限制的,当下一轮抓取开始后它就没有用了。默认的 重新抓取间隔是30天。因此删除超过这个时间期限的segment是可以的。而且也可以节省不少磁盘空间。Segment 的命名是 日期加时间 ,因此很直观的可以看出他们的存活周期。

索引库 是 反向索引所有系统中被抓取的页面,他并不直接从页面反向索引产生,它是合并很多小的 segment 的索引中产生的。Nutch 使用 Lucene 来建立索引,因此所有 Lucene 相关的工具 API 都用来建立索引库。需要说明的是 Lucene 的 segment 的概念 和 Nutch 的 segment 概念是完全不同的,不要混淆哦。 可以参考 车东 的相关文章。 www.chedong.com 简单来说 Lucene 的 segment 是 Lucene 索引库的一部分,而 Nutch 的 Segment 是 WebDB 中 被 抓取和索引的一部分。

无觅相关文章插件,快速提升流量