日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)4

發布時間:2024/9/27 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)4 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Cygwin,Nutch安裝配置,檢驗是否正確(對網友守望者博客的修改---在此感謝守望者)1

Cygwin,Nutch安裝配置,檢驗是否正確(對網友守望者博客的修改---在此感謝守望者)2

Cygwin,Nutch安裝配置,檢驗是否正確(對網友守望者博客的修改---在此感謝守望者)3

Cygwin,Nutch安裝配置,檢驗是否正確(對網友守望者博客的修改---在此感謝守望者)4


一、開發環境介紹(以我個人為例):

個人開發端:windows Server 2003 + Cygwin + Eclipse3.2

二、準備工作:

<1>.將Nutch導入eclipse,導入過程詳情請點擊查看文章

<2>.下載IKAnalyzer(http://code.google.com/p/ik-analyzer/downloads/list),本文采用的IKAnalyzer版本是3.2.8

<3>.下載Ant(http://ant.apache.org/bindownload.cgi)

<4>.下載Javacc(http://javacc.java.net/)

三、具體步驟:

注:在進行這些操作的之前請先將IKAnalyzer復制到nutch\lib文件夾下

并在eclipse的Nutch項目中添加這個jar包。

過程如下:

(1).先把工程刷新一下。

(2).右鍵工程名->build path –> configure build path

(3).在Libraries選項卡中點擊add Jars,然后在你的工程的目錄下lib文件中選擇剛剛添加的IKAnalyzer3.2.8.jar。

<1>.在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).此時NutchAnalysis.java會報錯

在兩個位置加入ParseException異常捕捉命令(詳情見圖)

(6).修改完上面的你會發現org.apache.nutch.searcher包中的Query.java報錯。

解決方法是找到報錯的地方用try{}catch(){}語句抓住異常,不要拋出,否則接下來還要改很多文件。

<2>.修改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;?
??????? analyzer = MY_ANALYZER;?
??????? TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
??????? tokenStream.addAttribute(TypeAttribute.class);
??????? tokenStream.addAttribute(FlagsAttribute.class);
??????? tokenStream.addAttribute(PayloadAttribute.class);
??????? tokenStream.addAttribute(PositionIncrementAttribute.class);
??????? return tokenStream;

}

<3>.修改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)

<4>.Ant

cmd進入命令行,切換到nutch所在目錄,執行ant命令,就會開始ant工作。完成后會在nutch目錄下生成build目錄。

在build文件夾中會生成三個文件,nutch-1.2.job、nutch-1.2.jar、nutch-1.2.war。

這三個文件用來替換你正式線上的Nutch目錄下的文件。如果你只在本機做測試,那就用這三個文件代替根目錄下的原來的三個同名文件即可。之后將nutch-1.2.war重新部署。測試成功。

<5>.分詞后出現的問題

在重新部署后,你在搜索時會發現有時會出先空白頁,有的句子、詞輸入進去無法查詢。

針對與這個情況,查看tomcat log發現如下提示:

org.apache.catalina.core.StandardWrapperValve invoke
嚴重: Servlet.service() for servlet jsp threw exception
java.lang.StringIndexOutOfBoundsException: String index out of range: -3

解決方法:

在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>

總結

以上是生活随笔為你收集整理的Cygwin,Nutch安装配置,检验是否正确(对网友守望者博客的修改---在此感谢守望者)4的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。