一、解壓到cygwin/home/user/nutch下,在裏面創建一個urls文件夾,裏面新建一個url.txt,裏面寫着你開始爬取的源網頁地址,好比http://www.163.com/ 注意最後的斜槓要加上html
二、修改nutch\conf\crawl-urlfilter.txt文件,把MY.DOMAIN.NAME字符替換爲url.txt內的url的域名,如:+^http://([a-z0-9]*\.)*163.com*/ 注意最後的斜槓要加上java
三、修改nutch\conf\nutch-default.xml文件,找到<name>http.agent.name</name> ,而後把Value值隨便設計一個,如 <name>http.agent.name</name> <value>163</value> 注意:若是http.agent.name爲空時,在爬行的時候可能出現空指針異常且在tomcat中搜索時可能致使0條記錄,因此務必加上web
四、修改nutch\conf\nutch-site.xml文件,若是是sina.com.cn 則value 的值爲:apache
http://www.sina.com.cn <property> 瀏覽器
<name>http.robots.agents</name> tomcat
<value> http://www.sina.com.cn</value> </property> <property> app
<name>http.agent.name</name> webapp
<value> http://www.sina.com.cn </value> </property> <property>ide
五、在cygwin下面執行 export LANG=」zh_CN.GBK」函數
六、把分詞包IKAnalyzer3.2.8.jar文件拷入nutch/lib目錄下
七、修改文件 Query.java,位置在C:nutch1.2srcjavaorgapachenutchsearcher下面,一共須要修改兩個地方。
(一、在36行的位置
添加 import org.apache.nutch.analysis.ParseException;
(二、在454行的位置
修改替換對應的代碼爲:
public static Query parse(String queryString, String queryLang, Configuration conf)
throws IOException {
try{
return fixup(NutchAnalysis.parseQuery(
queryString, AnalyzerFactory.get(conf).get(queryLang), conf), conf);
}
catch (ParseException e) {
e.printStackTrace();
throw new IOException(e.getMessage());
}
}
8、修改NutchAnalysis.jj代碼,位置在C:nutch1.2srcjavaorgapachenutchanalysis
在該文件裏找到 | <SIGRAM: <CJK> >,這表明按字劃分,修改成 | <SIGRAM: (<CJK>)+ >
而後將NutchAnalysis.jj拷到其餘目錄單獨進行編譯,好比在C盤根目錄新建一個文件夾cheng,把NutchAnalysis.jj拷貝到C:cheng 下面
用javacc工具生成NutchAnalysis.jj的源代碼,將生成的全部java源代碼(7個文件)所有覆蓋到 src/java/org/apache/nutch/analysis下
javacc使用方法:cmd進入命令行,切換到NutchAnalysis.jj所在目錄(即C:cheng),
輸入命令以下
cd C:
cd C:cheng
javacc NutchAnalysis.jj
就會生成7個文件了。
並將這7個文件複製到analysis文件夾下面。
9、修改NutchAnalysis.java文件代碼,位置在C:nutch1.2srcjavaorgapachenutchanalysis
(1、在import區域加入下面的代碼
import org.wltea.analyzer.lucene.IKTokenizer;
import org.apache.nutch.analysis.ParseException;
(2、在兩個位置加入ParseException異常捕捉命令,不然ant編譯時會提示錯誤。下面是修改後的代碼,須要修改的地方已標紅。
位置1:
public static Query parseQuery(String queryString, Configuration conf) throws IOException,ParseException {
return parseQuery(queryString, null, conf);
}
位置2:
public static Query parseQuery(String queryString, Analyzer analyzer, Configuration conf)
throws IOException,ParseException {
NutchAnalysis parser = new NutchAnalysis(
queryString, (analyzer != null) ? analyzer : new NutchDocumentAnalyzer(conf));
parser.queryString = queryString;
parser.queryFilters = new QueryFilters(conf);
return parser.parse(conf);
10、修改NutchDocumentAnalyzer.java文件代碼,位置也是C:nutch1.2srcjavaorgapachenutchanalysis下。
(1)引入IK包(第30行左右)
import org.wltea.analyzer.lucene.IKAnalyzer;
import org.apache.lucene.analysis.tokenattributes.*;
(2)修改public TokenStream tokenStream(String fieldName, Reader reader) 函數(第105行左右),替換爲:
public TokenStream tokenStream(String fieldName, Reader reader) {
Analyzer analyzer = new org.wltea.analyzer.lucene.IKAnalyzer();
return analyzer.tokenStream(fieldName, reader);
}
11、修改build.xml的文件代碼,位置在C:nutch1.2
(1、在 <target name="war" depends="jar,compile,generate-docs"></target>的<lib></lib>之間<include name="log4j-*.jar"/> 下(大概在200行),加入下面的命令使的編譯war文件的時候加入je-analysis的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文件了。
十二、進入命令行,切換到C盤nutch1.2目錄下,執行ant命令,就會開始ant工做,完成後會在nutch目錄下生成build文件夾。
文件替換,在build文件夾下會生成三個文件
1、將build/nutch-1.2.job替換nutch1.2目錄下文件
2、將build/nutch-1.2.jar替換nutch1.2目錄下文件
3、將build/nutch-1.2.war替換nutch1.2目錄下文件
1三、執行export LANG=」zh_CN.GBK」
14、從新爬行與創建索引
必須先刪除C:nutch1.2下的crawled文件夾
打開cygwin執行爬取命令
bin/nutch crawl url.txt -dir crawled -depth 3 -threads 4
15、tomcat搜索
事先刪除C:tomcat6.0webapps下的nutch-1.2文件夾和nutch-1.2.war
(1、將新生成的nutch-1.2.war拷貝到tomcat6.0/webapps目錄,啓動Tomcat服務後,會自動在該目錄下生成一個nutch-1.2文件夾。
(2、將新生成的nutch-1.2.jar文件和分詞包(IKAnalyzer3.2.8.jar)拷貝到tomcat中WEB-INF/lib下面
(3、啓動tomcat會自動生成nutch-1.2文件夾,修改C:tomcat6.0webappsnutch-1.2WEB-INFclasses下的nutch-site.xml
16、重啓tomcat,瀏覽器輸入http://localhost:8080進入到nutch搜索界面,輸入關鍵詞進行搜索,這時會出現空白頁,這時還須要修改一個地方。
仍是C:tomcat6.0webappsnutch-1.2WEB-INFclasses下的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>
重啓tomcat,進行搜索,這時候分詞的問題應該解決了吧!