`

从nutch索引里面,读取文章内容

阅读更多

       nutch作为一个完整的搜索引擎,是广大搜索爱好者学习的一个好项目。然而,因为nutch自己封装了一套严谨的IO操作类,要查看原始网页的内容,也不容易。在毕业设计的过程中,经过一般的摸索,可以由索引得到每个网页的原始内容。因此,后继的文本分类的研究也得以展开。代码如下:

import org.apache.lucene.search.IndexSearcher;
import java.io.*;
import org.apache.lucene.document.Document;
import org.apache.nutch.searcher.FetchedSegments;
import org.apache.nutch.fs.LocalFileSystem;
import java.util.ArrayList;
import java.util.Enumeration;
import org.apache.lucene.document.Field;
import org.apache.nutch.searcher.HitDetails;

/**
 * 从索引里面,读取文章内容
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2006</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class ExtractText {
  public ExtractText() {
  }
  public static void main(String[] args) throws IOException {

    String path = args[0];//nutch crawl完的主目录 如crawl-20060622203455
    File nutchFileRoot = new File(path);
    File index = new File(nutchFileRoot,"index");
    File segmentsDir = new  File(nutchFileRoot,"segments");
    File outPut = new File(nutchFileRoot,"plaitext");//存放内容的目录
    if(!outPut.isDirectory()){
      outPut.mkdir();
    }

    FetchedSegments segments = new FetchedSegments(new LocalFileSystem(), segmentsDir.toString());

    try {
      IndexSearcher searcher = new IndexSearcher(index.getAbsolutePath());
     
      for(int i = 0;i<searcher.maxDoc();i++){
        Document doc = searcher.doc(i);//依次遍历索引库中的每条记录
        
         String docNo = doc.get("docNo");
         String seg  = doc.get("segment");

         ArrayList fields = new ArrayList();
         ArrayList values = new ArrayList();

         Enumeration e = doc.fields();
         while (e.hasMoreElements()) {
           Field field = (Field)e.nextElement();
           fields.add(field.name());
           values.add(field.stringValue());
         }


        HitDetails detail = new HitDetails((String[])fields.toArray(new String[fields.size()]),
                               (String[])values.toArray(new String[values.size()]));
       
        String aa = segments.getParseText(detail).toString();//得到内容
       
        File temp =  new File(outPut,seg+"_"+docNo);//输出文件的名字,可以随便起,保证不重复就可以
        DataOutputStream outs = new DataOutputStream(new FileOutputStream(temp));
        outs.write(aa.getBytes());
        outs.close();

      }


    } catch (IOException ex) {
      ex.printStackTrace();
    }

  }
}

转自:http://hi.baidu.com/sunky/blog/item/40702ff5c42a9b25bd310949.html

分享到:
评论
3 楼 zhujyy 2012-07-25  
import org.apache.nutch.fs.LocalFileSystem;
需要引用的jar包可以发我一份么 qq
2289566693
2 楼 eryk 2010-10-31  
额,不好意思,这个我没试过,我用nutch只爬网址,在fetch里用自己的网页解析程序,后面的索引都没有用到,数据直接存到数据库了

不过我看你的错误貌似是路径的问题。不过不明白为啥会报出来hadoop的错误,完全没关系的呀。。。
1 楼 384444165 2010-10-29  
运行时,出现如下错误: Exception in thread "main" java.lang.NullPointerException at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:91) at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:144) at org.apache.hadoop.fs.Path.getFileSystem(Path.java:159) at org.apache.hadoop.mapred.MapFileOutputFormat.getReaders(MapFileOutputFormat.java:67) at org.apache.nutch.searcher.FetchedSegments$Segment.getReaders(FetchedSegments.java:90) at org.apache.nutch.searcher.FetchedSegments$Segment.getParseText(FetchedSegments.java:84) at org.apache.nutch.searcher.FetchedSegments.getParseText(FetchedSegments.java:152) at com.incesoft.ai.DBConnection.ExtractText.main(ExtractText.java:65)


求楼主可以解释。原帖也有同样问题,不过貌似没有得到回答

相关推荐

    Nutch使用总结 信息检索 建立索引 搜索引擎

    - **信息检索**: 是从大量信息中找到相关和有用信息的过程,Nutch的搜索功能基于倒排索引,这是一种高效的信息检索方法。 - **倒排索引**: 在倒排索引中,每个单词都有一个列表,列出该词在哪些文档中出现过,便于...

    Nutch 读取搜索结果目录统计数据、提取链接结构信息

    在这个场景中,我们关注的是如何利用 Nutch 来读取搜索结果目录的统计数据以及提取链接结构信息。 1. **readdb 命令**: `readdb` 是 Nutch 提供的一个工具,用于分析 Crawldb(爬行数据库)的内容。这个工具能够...

    mp3文件信息解析-nutch使用

    此外,对于图片等非文本信息,可能需要将其转换为适合存储在Nutch索引中的格式。 在Nutch的`parse-html`定制中,可能会涉及以下方面: 1. **链接识别**:修改或扩展URL检测规则,以捕获指向MP3文件的链接。 2. **...

    nutch部分网页乱码BUG修正

    Nutch是Apache开发的一款开源网络爬虫项目,用于抓取互联网上的网页并建立索引,以便于搜索引擎进行数据处理。然而,在实际使用过程中,由于编码问题,Nutch可能会出现部分网页乱码的情况。本篇文章将深入探讨这个...

    Nutch_的配置文件

    3. **Nutch插件的配置文件**:每个Nutch插件都可能有自己的配置文件,这些文件在插件被加载时自动读取。例如,过滤器(filter)插件通常有自己的配置,用于设定过滤规则。 配置文件的加载顺序决定了配置的优先级,...

    nutch缺失的两个jar组件

    在Nutch这个开源的全文搜索引擎项目中,"nutch缺失的两个jar组件"是指系统运行或构建过程中缺少的两个关键库文件,它们...通过解决这些缺失的库问题,Nutch将能够更全面地索引网络内容,提高搜索结果的多样性和准确性。

    apache-nutch-2.3.1-src.tar.gz

    8. **索引存储**:Nutch 可以将抓取的网页数据存储在各种后端,如 HDFS 或者本地文件系统,索引可以被 Elasticsearch 或者 Solr 等搜索引擎读取。 9. **爬虫调度**:Nutch 使用一个调度器(如 FairScheduler 或 ...

    如何通过java程序获得Nutch中网页的详细信息

    本篇文章将深入探讨如何使用Java来获取Nutch中存储的网页信息。 首先,我们需要理解Nutch的工作流程。Nutch分为多个阶段,包括抓取(Crawling)、解析(Parsing)、分割(Segmenting)和索引(Indexing)。抓取阶段...

    lucene2.4+nutch学习笔记三:lucene 在多个文本文档里找出包含一些关键字的文档

    5. **IndexReader**:读取已建立的索引,提供搜索功能。 6. **IndexSearcher**:执行搜索操作,返回匹配结果。 7. **QueryParser**:解析用户输入的查询字符串,生成相应的Query对象。 二、Nutch概述 Nutch是一个...

    nutch的另外两个包

    总结来说,JID3Lib 和 RTF-Parser 是 Nutch 索引和理解不同类型网页内容的关键组件。通过集成这样的第三方库,Nutch 能够支持更广泛的媒体类型,提供更加全面和精准的搜索服务。在实际应用中,这些插件对于处理...

    Nutch相关框架视频教程 讲义 杨尚川

    - **定制**:要进行Nutch的定制开发,可以从研究`build.xml`文件入手。这个文件定义了构建过程中的各个步骤,通过修改或扩展这些步骤,可以实现对Nutch的功能定制。 #### 八、命令行操作示例 以下是Nutch的一些...

    nutch 1.5的源代码

    Nutch 1.5 是一个基于Java开发的开源搜索引擎项目,它主要负责网络抓取、索引和搜索等功能。这个源代码包包含了实现这些功能的所有模块和组件,为开发者提供了深入理解搜索引擎工作原理以及定制化搜索引擎的机会。接...

    Nutch 解析器parse部分代码笔记

    在Nutch的解析过程中,`parseData`对象扮演着核心角色,它封装了从页面内容中提取出的关键信息,主要包括以下几个方面: ##### 1. `String title` - **定义**:表示网页的标题。 - **作用**:网页标题通常反映了该...

    Nutch 安装ppt

    本教程将主要介绍 Nutch 1.x,并部分涉及 Nutch 2.x 的相关内容。 #### 四、在 Eclipse 中导入 Nutch **安装环境**:Nutch 主要在 Linux 系统下运行。如果在 Windows 系统中想要运行 Nutch,则可以通过安装 Cygwin...

    nutch crawl代码解析

    Apache Nutch 是一个流行的开源网络爬虫项目,用于抓取和索引互联网上的网页。在深入理解 Nutch 的工作原理之前,了解其源码是至关重要的。本文将解析 Nutch-0.9 版本中的 `Crawl` 类,它是 Nutch 抓取流程的起点。 ...

    Lucene+nutch开发自己的搜索引擎 part2

    6. **内存缓存与磁盘存储**:Lucene优化了内存和磁盘的使用,允许快速读取索引,同时保持索引的持久化。 Nutch则是一个基于Lucene的开源网络爬虫,它的主要任务是抓取网页并建立索引。Nutch的知识点包括: 1. **...

Global site tag (gtag.js) - Google Analytics