“开始先吐槽一下,弄了几天,终于在昨天找出错误原因了,写下博文记录之。”
由于工程实践选题是关于搜索引擎的,先用nutch搭建个搜索引擎玩一玩,没想到一玩就是好几天,归正题。
1.下载JDK , Cygwin,tomcat,版本都用最新的肯定没问题。
2.系统环境变量设置。
JAVA_HOME = jdk的安装目录
PATH:设置java虚拟机的编译运行目录,%JAVA_HOME%/bin;%PATH%;
将Cygwin的bin路径加入PATH, 否则tomcat启动时找不到whomi命令(此处引用他人博文,虽然没试过,暂时也不明白)例如D:\Cygwin\bin;%PATH;
测试配置成功在dos输入javac; 在cygwin输入date
3.修改nutch-1.0的配置文件
(1).在nutch-1.0目录下创建文件夹urls,在此文件夹下创建url.txt 里面写http://www.qq.com (此处随意)
(2).修改nutch-1.0\conf\crawl-urlfilter.txt
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*MY.DOMAIN.NAME/
修改为
# accept hosts in MY.DOMAIN.NAME
+^http://([a-z0-9]*\.)*qq.com/(这里也要有/)
(3).修改网络爬虫代理配置
打开nutch/conf/nutch-site.xml文件,修改<configuration></configuration>为:
configuration>
<property>
<name>http.agent.name</name>
<value>my nutch agent</value>
</property>
<property>
<name>http.agent.version</name>
<value>1.0</value>
</property>
</configuration>
4.开始抓取符合配置文件路径的网页,并建立索引
进入nutch目录
$bin/nutch crawl urls -dir crwaldata -depth 2 -threads 10
crawl:通知nutch.jar,执行crawl的main方法。
urls:存放需要爬行的url.txt文件的目录
dir crawldata爬行后文件保存的位置
depth 2:爬行次数,或者成为深度,不过还是觉得次数更贴切,建议测试时改为1。
threads:指定并发的进程这是设定为10.
此处经常出现错误,网上有各种错误的解决方法,可以搜一搜,经常需要的步骤$ export LANG="zh_CN.GBK"。
5.部署测试web应用,进行搜索
1.退出tomcat,将nutch解压包中的nutch-1.0.war拷贝到tomcat的webapps目录下,再启动tomcat(把.war文件解压)
2.修改索引文件所在路径,即刚才抓取时设置的路径
修改/webapps/nutch-1.0/WEB-INF/classes/nutch-site.xml
<configuration>
</configuration>
修改为
<configuration>
<property>
<name>searcher.dir</name>
<value>D:\nutch-1.0\bin\crawldata</value>
</property>
</configuration>
3.为支持中文检索(不设置的话中文将无法解析),修改tomcat配置文件server.xml
<Connector port="8088" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"
redirectPort="8443"
acceptCount="100"
connectionTimeout="20000"
disableUploadTimeout="true"
URIEncoding="UTF-8" useBodyEncodingForURI="true"/>
4.http://localhost:8080/nutch-1.0/