Nutch使用入門(四)——添加中文分詞
WindowsApache互連網AntluceneJava代碼
- /**
- *本人亦初學者,如有不正確的地方請多多指教。謝謝!
- javacc NutchAnalysis.jj *部分內容參考自互連網,如有冒犯,請見諒。
- **/
基本資料
本文介紹了如果為Nutch添加中文分詞,詳細描述了添加中文分詞的步驟和應該注意的問題。
準備工作
1.Nutch,到http://nutch.apache.org/下載nutch-1.0.tar.gz,下載後直接解壓縮即可。
2.javacc,到https://javacc.dev.java.net/下載javacc-5.0.zip,下載後同樣解壓縮,將“javacc路徑/bin”添加到環境變數path,在windows命令視窗中輸入javacc,未提示錯誤表示javacc安裝成功。
3.ant,到http://ant.apache.org/下載ant,下載後解壓縮,將"ant路徑/bin"添加到環境變數path,在windows命令視窗輸入ant,未提示錯誤表示ant安裝成功。
4.IKAnalyzer,到http://code.google.com/p/ik-analyzer/downloads/list下載IKAnalyzer,本例使用版本是3.1.1GA。
為Nutch添加中文分詞
1.讓Nutch支援中文分詞。
在Nutch目錄下,找到src\java\org\apache\nutch\analysis\NutchAnalysis.jj檔案,複製到其他的一個目錄下,最好該目錄下沒有java檔案,修改NutchAnalysis.jj檔案,修改如下:
Java代碼
- line 130:
- | <SIGRAM: <CJK> >
-
-
- change to:
- | <SIGRAM: (<CJK>)+ >
將windows命令環境切換到改目錄下,執行如下命令:
Java代碼
- javacc NutchAnalysis.jj
產生了7個java檔案,其中NutchAnalysis.java 58行拋出異常,捕獲異常即可。將這7個java檔案替換掉src\java\org\apache\nutch\analysis目錄下相同名稱的檔案。
2.添加IKAnalyzer。
將下載好的IKAnalyzer3.1.1Stable.jar複製到Nutch目錄下的lib檔案夾中,修改src\java\org\apache\nutch\analysis目錄下NutchDocumentAnalyzer.java檔案,添加import語句,修改tokenStream方法。代碼如下:
Java代碼
- import org.wltea.analyzer.lucene.IKAnalyzer;
Java代碼
- public TokenStream tokenStream(String fieldName, Reader reader) {
- Analyzer analyzer;
- analyzer = new IKAnalyzer();
- return analyzer.tokenStream(fieldName, reader);
- }
3.重新編譯Nutch。
修改Nutch目錄下build.xml檔案,在195行後加入如下代碼:
Java代碼
- <include name="IKAnalyzer3.1.1Stable.jar"/>
將命令環境切換到Nutch目錄下,執行ant命令。出現如下錯誤:
Java代碼
- Buildfile: build.xml
-
- init:
-
- BUILD FAILED
- D:\nutch\nutch-1.0\build.xml:62: Specify at least one source--a file or resource
- collection.
-
- Total time: 0 seconds
解決辦法有兩個:
(1). 從SVN下載缺失的 config/*.template檔案。
(2).修改 build.xml,去掉62-64行,讓它不再需要template檔案。
將編譯產生的build檔案夾下的nutch-1.0.job檔案替換掉Nutch目錄下的nutch-1.0.job檔案。
將編譯產生的build\classes下檔案打包成nutch-1.0.jar,替換掉Nutch目錄下的nutch-1.0.jar檔案。打包命令如下:
Java代碼
- jar cvf nutch-1.0.jar org
將nutch-1.0.war包中的nutch-1.0.jar替換為剛剛產生的nutch-1.0.jar,並且加入IKAnalyzer3.1.1Stable.jar.
至此,全部工作都已經完成。接下來爬行和搜尋工作可以參考我的其他兩篇入門文章:
Nutch 使用入門(一)——準備工作及Intranet抓取
Nutch 使用入門(二)——互連網抓取
分享到:
Nutch 使用入門(三)——設定檔的載入
- 2010-05-16 02:59
- 瀏覽 3121
- 評論(3)
- 分類:互連網
- 相關推薦
評論
3 樓
commanderhyk 2010-07-15 剛才看了看nutch產生的程式碼,好像是缺失了一些屬性。我試著補上
Analyzer analyzer;
analyzer = new IKAnalyzer();
TokenStream tokenStream = analyzer.tokenStream(fieldName, reader);
tokenStream.addAttribute(TypeAttribute.class);//補充
tokenStream.addAttribute(FlagsAttribute.class);//補充
tokenStream.addAttribute(PayloadAttribute.class);//補充
tokenStream.addAttribute(PositionIncrementAttribute.class);//補充
return tokenStream;
經過實驗通過。可以查出資料了,但不知到原理為什麼這麼做。
2 樓
commanderhyk 2010-07-15 最近nutch發布了1.1,在學習中。基本的配置例子都跑通了,正在學習更換切詞器,按照您上述的方式都成功的部署了,但是最後查詢時候拋出了異常
java.lang.IllegalArgumentException: This AttributeSource does not have the attribute 'org.apache.lucene.analysis.tokenattributes.TermAttribute'.
我開始用 3.2.3後來改成3.1.1都不行。目前不知道如何解決,希望能幫我看看這個問題,如何解決。謝謝了
javaeye上有類似的錯誤說是能解決,但是沒有給出解決辦法,以下是串連
http://www.iteye.com/topic/476897?page=21 樓
softkid 2010-05-31 請注意中文分詞的版本,我自己就只是用來IKAnalyzer3.1.1Stable,網友試了3.2也行。還有,他試了最新的,但是不行。