WinXP+cygwin+eclipse配置nutch-1.2,添加IKAnalyzer中文分词
2011-11-07 17:01
459 查看
主要参考博客:
配置:
1,win7下cygwin + Eclipse + Nutch1.2 + Tomcat6 安装配置
2,nutch1.1导入eclipse中运行
3,nutch研究—基本使用相关说明
添加中文分词包:
4,Nutch1.2 添加IKAnalyzer中文分词
5,nutch研究—遇到的错误和解决办法
6,Nutch1.2二次开发详细攻略(四)【图文】------Nutch1.2二次开发(关于中文分词)
7,Nutch中使用自定义中文分词器
web界面二次开发:
8,Nutch 二次开发需要修改的东西
9,Nutch1.2二次开发详细攻略(三)【图文】------Nutch1.2二次开发(关于界面修改)
大致过程:
1,安装cygwin,配置环境变量,在PATH中添加安装路径“;E:\Cygwin\bin”(否则会报错:"Exception in thread "main" java.io.IOException:
Cannot run program "chmod": CreateProcess error=2)。
2,将nutch-1.2的代码导入eclipse。即:
1)在Eclipse新建一个Java Project,nutch-1.2;
2)将apache-nutch-1.2-src.zip源码包内/src/java文件夹下的内容复制到新建工程目录下的src文件夹;
3)将apache-nutch-1.2-bin.zip包中nutch-1.2目录下的lib、plugins、conf三个文件夹复制到新建工程的根目录下(与src同级);
4)右键工程properties,切换到"Libraries"选择"Add ClassFolder..."按钮,从列表中选择"conf",将 conf加入到classpath中;
5)右键工程properties,切换到"Libraries"选择"Add ExternalJARs "按钮,将lib文件夹中的所有jar加入到工程中。这两步完成后看代码应该不会有编译错误了。
注:还有另一种导入方法,即在eclipse中新建工程时选择已存在的目录,由eclipse扫描文件导入,再将conf文件夹加入classpath。前一种方式代码结构看起来清晰一点。
3,配置运行抓取任务。
1)修改conf下的nutch-site.xml(nutch-site.xml会覆盖nutch-default.xml中的默认配置),在configuration标签对中添加以下代码:
3)在工程的根目录下建立urls文件夹,其中新建一个url.txt文件,每行写入一个种子url,比如写入“http://www.sohu.com/”(注意种子url最后的斜线一定要加上,不然最后的索引结果为0);
4)配置java项目的运行参数:
org.apache.nutch.crawl.Crawl作为主类,右键选择Run as -> Run configration;
Program Arguments:urls -dir crawl -depth 5 -threads 5 -topN 100
VM arguments:-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log
5)点击Run开始任务。
4,将nutch部署在Tomcat中.
nutch编译后的文件中的war包放在tomcat的webapps下,启动tomcat,在生成的nutch-1.2文件夹下修改/WEB-INF/classes/nutch-site.xml,设置抓取文件夹的位置:
5,重新启动Tomcat。通过浏览器访问:http://localhost:8080/nutch-1.2 ,将看到搜索页面。
tomcat的中文搜索乱码设置。
1)修改tomcat配置文件\conf\server.xml。增加URIEncoding,useBodyEncodingForURI两项。
tomcat下修改/webapps/nutch-1.2/zh/header.html 的编码为GBK
并在<?xml version="1.0" encoding="GBK"?>后在添加<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
(注:这个修改时灵时不灵……无语)
测试查询1:
下面测试添加IKAnalyzer3.2.8中文分词。
1,需要用ant重新编译nutch,所以选择导入源码目录apache-nutch-1.2新建eclipse工程。
2,把IKAnalyzer3.2.8.jar加入工程的lib文件夹,并在eclipse中右键选择之add to build path。
3,在src/java/org/apache/nutch/analysis包下找到NutchAnalysis.jj,
(1).在 PARSER_BEGIN(NutchAnalysis)部分的导入声明中增加如下段
并在其后面加上
(4).将NutchAnalysis.jj复制到其他目录下,进行Javacc编译.
用javacc工具生成NutchAnalysis.jj的源代码,将生成的所有java源代码(7个文件)全部覆盖到 src/java/org/apache/nutch/analysis包下.
javacc的使用方法:cmd进入命令行,切换到NutchAnalysis.jj所在目录(最后把它拷贝到其它目录进行编译,如D盘),D:输入命令
javacc NutchAnalysis.jj
就会生成7个文件了。
(5).右键刷新覆盖后的eclipse工程,NutchAnalysis.java会报错,在eclipse提示中选择抛出对应的两个异常即可。
NutchAnalysisTokenManager.java可能会报错,我的原因是前面的第(2)步编译之后出现了中文乱码,在对应的第22行,依照第(2)步修正即可。
org.apache.nutch.searcher包中的Query.java报错,在eclipse提示中选择用try{}catch(){}语句捕获异常(如果选择抛出异常会有更多文件报错),在catch语句后添加return null。
4,修改src/java/org/apache/nutch/analysis包下的NutchDocumentAnalyzer
(1).在 <target name="war" depends="jar,compile,generate-docs"></target>的<lib></lib>之间<include name="log4j-*.jar"/> 下(約200行),加入下面的命令使的编译war文件的时候加入je-analysis的jar文件,注意IKAnalyzer3.2.8.jar的版本号
<include name="IKAnalyzer3.2.8.jar"/>
(2).修改<targe tname="job" depends="compile">,改为<target name="job" depends="compile,war">这样编译后能自动在bulid文件夹下生成nutch-1.2.job,nutch-1.2.war,nutch-1.2.jar文件了。(注:不这样也可以,最后直接ant war, ant jar 就能生成nutch-1.2.war,nutch-1.2.jar)
6,cmd进入命令行,切换到nutch所在目录,执行ant命令,就会开始ant工作。完成后会在nutch目录下生成build目录。
在build文件夹中会生成三个文件,nutch-1.2.job、nutch-1.2.jar、nutch-1.2.war。即可准备使用新编译的nutch-1.2.war包配置tomcat重新部署测试。
7,在重新部署后,在搜索时会发现会出先空白页。解决方法:
在tomcat中部署的nutch目录下进入WEB-INF\classes
找到nutch-site.xml 在这里添加如下代码即可。
配置:
1,win7下cygwin + Eclipse + Nutch1.2 + Tomcat6 安装配置
2,nutch1.1导入eclipse中运行
3,nutch研究—基本使用相关说明
添加中文分词包:
4,Nutch1.2 添加IKAnalyzer中文分词
5,nutch研究—遇到的错误和解决办法
6,Nutch1.2二次开发详细攻略(四)【图文】------Nutch1.2二次开发(关于中文分词)
7,Nutch中使用自定义中文分词器
web界面二次开发:
8,Nutch 二次开发需要修改的东西
9,Nutch1.2二次开发详细攻略(三)【图文】------Nutch1.2二次开发(关于界面修改)
大致过程:
1,安装cygwin,配置环境变量,在PATH中添加安装路径“;E:\Cygwin\bin”(否则会报错:"Exception in thread "main" java.io.IOException:
Cannot run program "chmod": CreateProcess error=2)。
2,将nutch-1.2的代码导入eclipse。即:
1)在Eclipse新建一个Java Project,nutch-1.2;
2)将apache-nutch-1.2-src.zip源码包内/src/java文件夹下的内容复制到新建工程目录下的src文件夹;
3)将apache-nutch-1.2-bin.zip包中nutch-1.2目录下的lib、plugins、conf三个文件夹复制到新建工程的根目录下(与src同级);
4)右键工程properties,切换到"Libraries"选择"Add ClassFolder..."按钮,从列表中选择"conf",将 conf加入到classpath中;
5)右键工程properties,切换到"Libraries"选择"Add ExternalJARs "按钮,将lib文件夹中的所有jar加入到工程中。这两步完成后看代码应该不会有编译错误了。
注:还有另一种导入方法,即在eclipse中新建工程时选择已存在的目录,由eclipse扫描文件导入,再将conf文件夹加入classpath。前一种方式代码结构看起来清晰一点。
3,配置运行抓取任务。
1)修改conf下的nutch-site.xml(nutch-site.xml会覆盖nutch-default.xml中的默认配置),在configuration标签对中添加以下代码:
<property> <name>http.agent.name</name> <value>your spider name</value> </property> <property> <name>plugin.folders</name> <value>./plugins</value> </property>2)在conf/crawl-urlfilter.txt中配置想要匹配抓取的链接,
# accept hosts in MY.DOMAIN.NAME +^http://([a-z0-9]*\.)*sohu.com/比如上面的设置用于匹配sohu的网页。
3)在工程的根目录下建立urls文件夹,其中新建一个url.txt文件,每行写入一个种子url,比如写入“http://www.sohu.com/”(注意种子url最后的斜线一定要加上,不然最后的索引结果为0);
4)配置java项目的运行参数:
org.apache.nutch.crawl.Crawl作为主类,右键选择Run as -> Run configration;
Program Arguments:urls -dir crawl -depth 5 -threads 5 -topN 100
VM arguments:-Dhadoop.log.dir=logs -Dhadoop.log.file=hadoop.log
5)点击Run开始任务。
4,将nutch部署在Tomcat中.
nutch编译后的文件中的war包放在tomcat的webapps下,启动tomcat,在生成的nutch-1.2文件夹下修改/WEB-INF/classes/nutch-site.xml,设置抓取文件夹的位置:
<property> <name>searcher.dir</name> <value>E:\Program Files\eclipse\Workspace\nutch-1.2\crawl</value> </property>
5,重新启动Tomcat。通过浏览器访问:http://localhost:8080/nutch-1.2 ,将看到搜索页面。
tomcat的中文搜索乱码设置。
1)修改tomcat配置文件\conf\server.xml。增加URIEncoding,useBodyEncodingForURI两项。
<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="UTF-8" useBodyEncodingForURI="true"/>2)右上角“简介”、“常见问题”在搜索主界面不乱吗,但搜索后出现乱码的问题。
tomcat下修改/webapps/nutch-1.2/zh/header.html 的编码为GBK
并在<?xml version="1.0" encoding="GBK"?>后在添加<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
(注:这个修改时灵时不灵……无语)
测试查询1:
下面测试添加IKAnalyzer3.2.8中文分词。
1,需要用ant重新编译nutch,所以选择导入源码目录apache-nutch-1.2新建eclipse工程。
2,把IKAnalyzer3.2.8.jar加入工程的lib文件夹,并在eclipse中右键选择之add to build path。
3,在src/java/org/apache/nutch/analysis包下找到NutchAnalysis.jj,
(1).在 PARSER_BEGIN(NutchAnalysis)部分的导入声明中增加如下段
import org.wltea.analyzer.lucene.IKTokenizer;(2).在 TOKEN_MGR_DECLS : { 下面增加如下段
IKTokenizer Analyzer; TermAttribute termAtt = null;//代表用空格分割器分出来的一个中文词 OffsetAttribute offAtt = null;//中文词开始结束标记 TokenStream stream = null; private int cjkStartOffset = 0;//中文片段的起始位置定义(3). 到 TOKEN : { 部分,找到| <SIGRAM: <CJK> >,这代表按字划分,修改为| <SIGRAM: (<CJK>)+ >
并在其后面加上
{ if (stream == null) { stream = new IKTokenizer(new StringReader(image.toString()),true); //stream = Analyzer.tokenStream("",new StringReader(image.toString())); cjkStartOffset = matchedToken.beginColumn; try { stream.reset(); } catch (IOException e) { e.printStackTrace(); } termAtt = (TermAttribute) stream.addAttribute(TermAttribute.class); offAtt = (OffsetAttribute) stream.addAttribute(OffsetAttribute.class); try { if (stream.incrementToken() == false) termAtt = null; } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } if (termAtt != null && !termAtt.term().equals("")) { matchedToken.image = termAtt.term(); matchedToken.beginColumn = cjkStartOffset + offAtt.startOffset(); matchedToken.endColumn = cjkStartOffset + offAtt.endOffset(); try { if (stream.incrementToken() != false) input_stream.backup(1); else termAtt = null; } catch (IOException e) { e.printStackTrace(); } } if (termAtt == null || termAtt.term().equals("")) { stream = null; cjkStartOffset = 0; } }
(4).将NutchAnalysis.jj复制到其他目录下,进行Javacc编译.
用javacc工具生成NutchAnalysis.jj的源代码,将生成的所有java源代码(7个文件)全部覆盖到 src/java/org/apache/nutch/analysis包下.
javacc的使用方法:cmd进入命令行,切换到NutchAnalysis.jj所在目录(最后把它拷贝到其它目录进行编译,如D盘),D:输入命令
javacc NutchAnalysis.jj
就会生成7个文件了。
(5).右键刷新覆盖后的eclipse工程,NutchAnalysis.java会报错,在eclipse提示中选择抛出对应的两个异常即可。
NutchAnalysisTokenManager.java可能会报错,我的原因是前面的第(2)步编译之后出现了中文乱码,在对应的第22行,依照第(2)步修正即可。
org.apache.nutch.searcher包中的Query.java报错,在eclipse提示中选择用try{}catch(){}语句捕获异常(如果选择抛出异常会有更多文件报错),在catch语句后添加return null。
4,修改src/java/org/apache/nutch/analysis包下的NutchDocumentAnalyzer
//在private static Analyzer ANCHOR_ANALYZER;后面加上 private static Analyzer MY_ANALYZER;
//在ANCHOR_ANALYZER = new AnchorAnalyzer();后面加上 MY_ANALYZER = new IKAnalyzer();把 tokenStream修改为:
public TokenStream tokenStream(String fieldName, Reader reader) { /* Analyzer analyzer; if ("anchor".equals(fieldName)) analyzer = ANCHOR_ANALYZER; else analyzer = CONTENT_ANALYZER; return analyzer.tokenStream(fieldName, reader); */ Analyzer analyzer = new org.wltea.analyzer.lucene.IKAnalyzer(); return analyzer.tokenStream(fieldName, reader); }5,修改nutch/build.xml
(1).在 <target name="war" depends="jar,compile,generate-docs"></target>的<lib></lib>之间<include name="log4j-*.jar"/> 下(約200行),加入下面的命令使的编译war文件的时候加入je-analysis的jar文件,注意IKAnalyzer3.2.8.jar的版本号
<include name="IKAnalyzer3.2.8.jar"/>
(2).修改<targe tname="job" depends="compile">,改为<target name="job" depends="compile,war">这样编译后能自动在bulid文件夹下生成nutch-1.2.job,nutch-1.2.war,nutch-1.2.jar文件了。(注:不这样也可以,最后直接ant war, ant jar 就能生成nutch-1.2.war,nutch-1.2.jar)
6,cmd进入命令行,切换到nutch所在目录,执行ant命令,就会开始ant工作。完成后会在nutch目录下生成build目录。
在build文件夹中会生成三个文件,nutch-1.2.job、nutch-1.2.jar、nutch-1.2.war。即可准备使用新编译的nutch-1.2.war包配置tomcat重新部署测试。
7,在重新部署后,在搜索时会发现会出先空白页。解决方法:
在tomcat中部署的nutch目录下进入WEB-INF\classes
找到nutch-site.xml 在这里添加如下代码即可。
<property> <name>plugin.includes</name> <value>protocol-http|urlfilter-regex|parse-(text|html|js)|analysis-(zh)|index-basic|query-(basic|site|url)|summary-lucene|scoring-opic|urlnormalizer-(pass|regex|basic)</value> </property>测试查询2:(摘要部分分词明显更多,以词为单位,而默认配置时的摘要中还存在单个字的高亮。但时界面的编码又不知出现什么问题,header的乱码,search、cached、explain、next page等等是英文显示……界面方面的问题就暂先不管了……)
相关文章推荐
- Nutch1.2 添加IKAnalyzer中文分词
- Nutch1.2 添加IKAnalyzer中文分词
- Nutch1.2增加IKAnalyzer中文分词
- Ubuntu环境下Nutch1.2 二次开发(添加中文分词)
- Nutch-1.2添加中文分词ICTCLAS以及常见问题解答
- Nutch成功添加中文分词
- windows平台下在eclipse中配置Nutch1.2并调试
- Apache Solr 4.9 和 IKAnalyzer中文分词配置(上)
- Solr6.5配置中文分词IKAnalyzer和拼音分词pinyinAnalyzer (二)
- Apache Solr 4.9 和 IKAnalyzer中文分词配置(下)
- nutch1.2 eclipse tomcat6.0 配置
- nutch-1.0添加JE中文分词-修改源码…
- 中文分词语言处理HanPL配置,以及在eclipse中安装使用方式
- solr5.3.1 添加中文分词之IKAnalyzer
- nutch添加imdict-chinese-analyzer实现中文分词
- 【solr】Solr中文分词配置(IKAnalyzer)
- solr 5.5.1安装并配置中文分词IKAnalyzer
- Solr中文分词配置(IKAnalyzer)
- solr 扩展中文分词 IKAnalyzer 配置文件路径
- solr 3.4配置中文分词IKAnalyzer3.2.8