2008-04-24

Java开源搜索引擎[收藏]

关键字: java, 搜索引擎
 Egothor  Egothor是一个用Java编写的开源而高效的全文本搜索引擎。借助Java的跨平台特性,Egothor能应用于任何环境的应用,既可配置为单独的搜索引擎,又能用于你的应用作为全文检索之用。 更多Egothor信息  Nutch  Nutch 是一个开源Java 实现的搜索引擎。它提供了我们运行自己的搜索引擎所需的全部工具。包括全文搜索和Web爬虫。 更多Nutch信息  Lucene  Apache Lucene是一个基于Java全文搜索引擎,利用它 ...
2008-01-04

分享一本斯坦福的信息检索的教材

关键字: ir, search engine
斯坦福的信息检索的教材,还没出版,先分享一下电子版原稿. 对于学习信息检索和搜索引擎是个相当好的教材.
还没有来得及看,但搜索引擎的书不是很好找,先放上,希望对大家能有用
分享一个Nutch入门学习的资料,感觉写的还不错.
今天来看看Nutch如何Parse网页的: Nutch使用了两种Html parser工具(NekoHTML和TagSoup)来实现html的提取,这两种工具是可通过配置来选择的。 当然你要自己实现Parser你还可以选择HTMLParser[基于visitor访问者模式同时也提供了Event driver的接口]来 提取网页。如果你用惯了XML一套处理方法,使用NekoHTML和TagSoup应该会比较顺手的。 我们来看看类public class HtmlParser implements Parser的实现: 首先为了更好的理解下面的代码先看看成员变量: private stati ...
设计要素 nutch包含以下几个部分: 辅助类 Log:记载运行信息; Time:记载时间信息; 协议类 目的:各种进程之间的通信协议 Client和M/R系统通信协议:完成客户端和M/R系统的通信; Job和Task系统通信协议:由于一个任务要分布完成,所以需要任务和子任务之间的通信协议; MapTask和ReduceTask通信协议:由于MAP和REDUCE是一个任务的顺序执行过程,所以需要两者之间的通信协议来对两个步骤进行协调,主要是文件输入输出协调; 进程通信协议:子进程和父进程通信协议;  任务管理    &nb ...
我现在看得源码主要是网页抓取部分,这部分相对比较容易。我首先定位所有与网页抓取部分,大体看了整个流程后,然后几乎看了所有函数的实现,当然也有许多不太明白的,相信随着逐渐对整个代码的熟悉,这些疑问会逐渐解决。现在有一些疑问就是Nutch为什么没有使用异步的Socket和缓冲DNS来提高抓取的效率(或许我还没有找到)。 Nutch的代码整体上写的还算通俗易懂。但Nutch大量使用了Google的Map-Reduce思想,来简化了很多功能模块的设计,这对从来没有接触到Map-Reduce的初学者带来了很陡峭的学习曲线。可以这样说,没有对Map-Reduce的思想的深刻理解,读懂Nutch源码是非常 ...
今天我们看看Nutch网页抓取,所用的几种数据结构: 主要涉及到了这几个类:FetchListEntry,Page, 首先我们看看FetchListEntry类: public final class FetchListEntry implements Writable, Cloneable 实现了Writable, Cloneable接口,Nutch许多类实现了Writable, Cloneable。 自己负责自己的读写操作其实是个很合理的设计方法,分离出来反倒有很琐碎 的感觉。 看看里面的成员变量: public static final String DIR_NAME = "fet ...
今天我们来看看Nutch的源代码中的protocol-http插件,是如何抓取和下载web页面的。protocol-http就两个类HttpRespose和Http类,其中HttpRespose主要是向web服务器发请求来获取响应,从而下载页面。Http类则非常简单,其实可以说是HttpResponse的一个Facade,设置配置信息,然后创建HttpRespose。用户似乎只需要和Http类打交道就行了(我也没看全,所以只是猜测)。 我们来看看HttpResponse类: 看这个类的源码需要从构造函数 public HttpResponse(HttpBase http, URL url, C ...
搜索引擎Nutch源代码研究之一 网页抓取: Nutch的爬虫代码部分主要集中在:package org.apache.nutch.fetcher和插件protocol-file Protocol-ftp protocol-http protocol-httpclient以及相应的Parser插件中: 下面我们先从org.apache.nutch.fetcher开始: 最主要的类是Fetcher类,我们从它入手一步步跟踪整个代码: 我们从run函数入手: 首先: for (int i = 0; i < threadCount; i++) { // spawn thread ...
fuliang
搜索本博客
我的相册
53569b0e-134e-31fa-9555-bdfa6932b0e7-thumb
RSS Reader1
共 6 张
存档
最新评论