搜索引擎-nutch-1

nutch環境配置備忘:
1、Cygwin安裝
我使用的是Cygwin本地安裝版,local install,並把所有組件都設爲installed即可。
2、解壓nutch
將NUTCH-0.9解壓後複製到HOME/Administrator下,或者在Cygwin下使用gunzip命令皆可。
3、安裝JDK
可能是我的系統最近不正常吧,我的JDK必須安裝在nutch目錄下才能找到(正確設置了環境變量,可是隻要安裝在其它位置,就找不到JDK,如果哪位能知道原因,請指教,非常感謝!)我這裏的安裝路徑是:C:\cygwin\home\Administrator\nutch-0.9\JDK

[b]環境變量設置如下:(此處可以只設置NUTCH_JAVA_HOME)[/b]
JAVA_HOME C:\cygwin\home\Administrator\nutch-0.9\JDK
CLASS_PATH 添加 ;C:\cygwin\home\Administrator\nutch-0.9\JDK\lib
NUTCH_JAVA_HOME C:\cygwin\home\Administrator\nutch-0.9\JDK
PATH 添加 ;C:\cygwin\home\Administrator\nutch-0.9\JDK\bin

4、使用爬蟲之前的準備
首先在bin目錄下新建目錄urls,在urls中新建一個文本文家nutch.txt,將要抓取的網站地址輸入,比如[url]http://www.sina.com.cn/[/url](注意最後的/一定要有)

打開conf\crawl-urlfilter.txt文件,將
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/

改爲
# accept hosts in MY.DOMAIN.NAME
[b]+^http://([a- z0-9]*\.)*sina.com.cn/(這裏也要有/呦)[/b]

打開nutch/conf/nutch-site.xml文件,修改<configuration>< /configuration>爲:
<configuration>
<property>
<name>http.agent.name</name>
<value>HD nutch agent</value>
</property>
<property>
<name>http.agent.version</name>
<value>1.0</value>
</property>
</configuration>
保存
5、開始爬
進入nutch目錄,進入bin目錄
[b]$sh nutch crawl urls -dir sina -depth 4 -threads 5 -topN 1000 >logs/log1.log[/b](要先建立自己的日誌目錄)[b](url地址爲bin目錄下,要寫全名)[/b]
crawl:通知nutch.jar,執行crawl的main方法。
urls:存放需要爬行的url.txt文件的目錄
-dir sina 爬行後文件保存的位置
-depth 2:爬行次數,或者成爲深度,不過還是覺得次數更貼切,建議測試時改爲1。
-threads 指定併發的進程 這是設定爲 4
-topN :一個網站保存的最大頁面數。
**注意sina文件夾不能存在,會報錯

曾經出現的錯誤:
Generator: 0 records selected for fetching, exiting ...
Stopping at depth=0 - no more URLs to fetch.
No URLs to fetch - check your seed list and URL filters.
解決方法:在urls的 nutch.txt中再添加一個URL即可,原因現在還不知道。

6、掛上服務器
當爬取網頁成功之後,開始配置 TOMCAT
TOMCAT的安裝目錄是:C:\Program Files\Apache Software Foundation\Tomcat 5.5

TOMCAT_HOME C:\Program Files\Apache Software Foundation\Tomcat 5.5
CALSSPATH 添加: %TOMECAT_HOME%\bin;

在服務器關閉的狀態下,刪除 TOMCAT中WEBAPPS文件夾中的ROOT文件夾,將nutch-0.9.war拷貝到webapps下,改名爲ROOT.war,啓動 TOMCAT,會自動解壓出ROOT文件。
修改/webapps/ROOT /WEB-INF/classes/nutch-site.xml:

<configuration>
</configuration>
換成
<configuration>
<property>
<name>searcher.dir</name>
[b] <value>(修改爲自己的下載目錄)</value>[/b]
</property>
</configuration>
爲了支持中文需要修改 tomcat的配置文件,打開tomcat\conf下的server.xml文件,將其中的Connector部分改成如下形式即可:

<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true" />
注意最後一行的兩項是新加的.
利用tomcat搜索
重啓tomcat,在瀏覽器中輸入:http://127.0.0.1:8080
出現nutch搜索界面,
在搜索框中輸入java並搜索,將看到你的搜索結果

***曾經出現的錯誤
org.apache.jasper.JasperException: /search.jsp(151,22) Attribute value language + "/include/header.html" is quoted with " which must be escaped when used within the value
這個錯誤困擾了我很長時間,後來在http://news.skelter.net/articles/2008/09/24/nutch-0-9-quoted-with-must-be-escaped
找到解答
解決方法是:把search.jsp的第151行改成
<jsp:include page="<%= language + \"/include/header.html\"%>"/>
就是在 ^ 添加一個\
之後就正常了。作者說可能是TOMCAT6的特殊問題,可我用 TOMCAT5.5~~~不過確實解決了。

******************問題解決了的華麗的分割線********************
****引自http://blog.sina.com.cn/s/blog_4cc16fc50100bqxe.html****
分析:查看nutch Web應用根目錄下的search.jsp可知,是引號匹配的問題。
<jsp:include page="<%= language + "/include/header.html"%>"/> //line 152 search.jsp
第一個引號和後面第一個出現的引號進行匹配,而不是和這一行最後一個引號進行匹配,所以問題就出現了。
解決方法:
將該行代碼修改爲:<jsp:include page="<%= language+urlsuffix %>"/>
這裏我們定一個字符串urlsuffix,我們把它定義在language字符串定義之後,
String language = // line 116 search.jsp
ResourceBundle.getBundle("org.nutch.jsp.search", request.getLocale())
.getLocale().getLanguage();
String urlsuffix="/include/header.html";
修改完成後,爲確保修改成功,重啓一下Tomcat服務器,進行搜索,不再報錯。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章