标签归档:nutch

从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;
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

Nutch中使用自定义中文分词器

原文:http://xtfncel.iteye.com/blog/756763

Nutch中使用自定义中文分词器

Nutch对中文查询时默认采用的分词器为NutchAnalyzer,对中文默认采用单字切分.这种效果不是很理想,我们可以自定义切词器,以实现对中文支持.

通常可以采用的两种方式添加对中文的支持:

1.采用插件的方式,不修改系统代码的基础上,编写中文分词插件实现对中文分词的支持。

2.直接修改nutch的系统代码,对默认的分词器代码进行修改使其使用自定义中文分词程序.

继续阅读

Nutch中文分词总结

1 中文分词介绍

中文分词是在做检索类系统时需要重点考虑的一个因素。Nutch的本土化过程也需要更改对中文分词的支持。目前,Nutch中文分词方式大致有两种方式:

一是修改源代码。这种方式是直接对Nutch分词处理类进行修改,调用已写好的一些分词组件进行分词。

二是编写分词插件。这种方式是按照Nutch定义的插件编写规则重新编写或者添加中文分词插件。

以上两种方式都是可取的。目前,由于开源社区的活跃,已经有很多种分词组件的出现,无论是修改源代码的方式还是编写分词插件的方式,都是依赖于这些分词组件的。下面列出了主要的一些分词组件:

继续阅读

windows下安装nutch1.6时遇到的一些问题小记

1.nutch1.2版本后没有crawl-urlfilter.txt这个文件,

不过多了regex-urlfilter.txt,在这个里面加入

+^http://([a-z0-9]*.)*163.com  这个代表只抓取www.163.com的内容

然后在nutch-site.xml

<property>

<name>http.agent.name</name>

<value>MSpider</value>

</property>

<property>

<name>http.agent.url</name>

<value>www.163.com</value>

</property>

2.修改java运行参数

打开Run configurations..

Run > Run Configurations…–> New Java Application-
Main class–>org.apache.nutch.crawl.Crawl
Program arguments–>urls -dir myPages -depth 2 -topN 50 或 urls -dir crawl -depth 5 -threads 4 -topN 10

然后在VM arguments输入-Xms64m -Xmx512m

3.在windows远程调试linux的程序时,报错:

Exception in thread “main” java.io.IOException: Failed to set permissions of path: tmphadoop-AdministratormapredstagingAdministrator-4954228.staging to 0700
at org.apache.hadoop.fs.FileUtil.checkReturnValue(FileUtil.java:689)
at org.apache.hadoop.fs.FileUtil.setPermission(FileUtil.java:662)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:509)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:344)
at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:189)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:116)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:856)
at org.apache.hadoop.mapred.JobClient$2.run(JobClient.java:850)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121)
at org.apache.hadoop.mapred.JobClient.submitJobInternal(JobClient.java:850)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:500)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:530)
at org.apache.nutch.util.NutchJob.waitForCompletion(NutchJob.java:50)
at org.apache.nutch.crawl.GeneratorJob.run(GeneratorJob.java:191)
at org.apache.nutch.crawl.Crawler.runTool(Crawler.java:68)
at org.apache.nutch.crawl.Crawler.run(Crawler.java:152)
at org.apache.nutch.crawl.Crawler.run(Crawler.java:250)
at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
at org.apache.nutch.crawl.Crawler.main(Crawler.java:257)

这个是Windows下文件权限问题,在Linux下可以正常运行,不存在这样的问题。

解决方法是,修改/hadoop-1.0.2/src/core/org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉即可(有些粗暴,在Window下,可以不用检查):

……privatestaticvoidcheckReturnValue(booleanrv,Filep,FsPermissionpermission)throwsIOException{/** if (!rv) { throw new IOException(“Failed to set permissions of path: ” + p + ” to ” + String.format(“%04o”, permission.toShort())); } **/}……

重新编译打包hadoop-core-1.0.2.jar,替换掉hadoop-1.0.2根目录下的hadoop-core-1.0.2.jar即可。

这里提供一份修改版的hadoop-core-1.0.2-modified.jar文件,替换原hadoop-core-1.0.2.jar即可。

替换之后,刷新项目,设置好正确的jar包依赖,现在再运行WordCountTest,即可。

成功之后,在Eclipse下刷新HDFS目录,可以看到生成了ouput2目录:

 

https://skydrive.live.com/?cid=cf7746837803bc50&id=CF7746837803BC50%211276

一些Nutch的学习资料

1)Nutch简介及安装

(1)Nutch1.4安装及测试

地址:http://blog.csdn.net/lidexin2003/article/details/7316188

(2)Linux下单机配置Nutch

地址:http://blog.csdn.net/zklth/article/details/5618948

(3)Linux下安装tomcat

地址:http://blog.sina.com.cn/s/blog_59b976a10100a3w1.html

(4)CentOS tomcat普通用户执行配置安装

地址:http://os.51cto.com/art/201002/184813.htm

(5)Linux下Tomcat的安装

地址:http://wanwentao.blog.51cto.com/2406488/548796

(6)nutch百度百科

地址:http://baike.baidu.com/view/46642.htm

2)Solr简介及安装

(1)不错的 solr 使用安装介绍

地址:http://www.cnblogs.com/cy163/archive/2009/09/18/1569681.html

(2)Linux下部署Solr

地址:http://www.cnblogs.com/TerryLiang/archive/2009/09/12/1565359.html

(3)Lucene & Solr

地址:http://www.cnblogs.com/limei/archive/2011/10/09/2204024.html

(4)ubuntu下Apache Solr的安装流程

地址:http://blog.csdn.net/hzcyclone/article/details/7026958

(5)solr 3.5 配置及应用(一)

地址:http://blog.csdn.net/chunming8302/article/details/7321367

(6)Solr 3.5 + Tomcat7 + mmseg4j + 搜狗词库 -配置并运行

地址:http://www.cnblogs.com/hamy/archive/2012/02/17/2355413.html

(7) Linux上 Nutch 1.3 + Solr 3.4.0 + Tomcat6.0 搜索引擎单节点搭建笔记

地址:http://blog.csdn.net/sikangtina/article/details/7104599

3)Nutch简单应用

(1)nutch1.0各种命令

地址:http://blog.csdn.net/ninjuli/article/details/4201055

(2)nutch命令详解

地址:http://hi.baidu.com/867862605/blog/item/bf65f51898460105403417c0.html

(3)Nutch 1.3 学习笔记2

地址:http://blog.csdn.net/amuseme_lu/article/details/6710221

4)Eclipse开发配置

(1)Eclipse安装ivyDe插件

地址:http://blog.csdn.net/lunwenbiji/article/details/7259150

(2)Nutch学习笔记

地址:http://www.cnblogs.com/streamhope/category/310177.html

(3)备忘录:Nutch+eclipse配置

地址:http://blog.csdn.net/wuyamony/article/details/7181491

(4)Nutch1.4 windows下eclipse配置图文详解

地址:http://wenku.baidu.com/view/d3b61414f18583d049645982.html

(5)nutch1.4在eclipse里配置

地址:http://www.haogongju.net/art/1225307

(6)eclipse部署配置nutch1.3

地址:http://wangwei3.iteye.com/blog/816056

(7)WinXP+cygwin+eclipse配置nutch-1.2,添加IKAnalyzer中文分词

地址:http://blog.csdn.net/neo_2011/article/details/6943622

(8)nutch1.1导入eclipse中运行

地址:http://xtfncel.iteye.com/blog/756735

(9)win7下cygwin + Eclipse + Nutch1.2 + Tomcat6 安装配置

地址:http://blog.csdn.net/eaglex/article/details/6314450

转-Nutch二次开发学习笔记

原文地址:http://ileo.me/2012/03/18/nutch1-2/

此笔记分为四个部分

1.Nutch1.2二次开发详细攻略(一)【图文】——Windows平台下Cygwin环境的搭建

2.Nutch1.2二次开发详细攻略(二)【图文】——Windows平台下Nutch1.2的搭建

3.Nutch1.2二次开发详细攻略(三)【图文】——Nutch1.2二次开发(关于界面修改)

4.Nutch1.2二次开发详细攻略(四)【图文】——Nutch1.2二次开发(关于中文分词)

 

由博主在2011-07-27 整理发布在原博客上(http://www.cnblogs.com/streamhope),由于图片和格式排版问题,就没有转发到新的博客。

当然你也可以下载博主整理的PDF文档

点击下载Nutch1.2二次开发攻略

另外博主为你准备了一些基础文档,有助于你更好的理解工作机理。

点击下载Nutch入门学习

点击下载Nutch插件机制分析

点击下载Nutch0.8.1 API帮助文档

希望以上资料对大家有所帮助,欢迎大家一起交流。