集成nutch和solr,并加入中文分词的过程
1.准备工作
首先安装好jdk和tomcat,我安装的是sun-java6-jdk,注意tomcat的用户最好改成正在使用的用户(有时候在当前用户修改环境变量时,tomcat如果是root用户,可能不会载入该环境变量)
?
2.安装nutch
我下载的是src版本,下载后解压,进入NUTCH目录,并用ant命令编译.
?
建立urls入口地址:mkdir urls; echo "http://***"> seed.txt
?
加入过滤网址:vim conf/crawl-urlfilter.txt,写入过滤规则,注意每一行开头不能有空格,否则在测试时会报异常或者错误 (该目录下的regex-urlfilter.txt也有类似的作用,但是如何设置在有需要时再研究)
?
测试 "Usage: bin/nutch Crawl <urlDir> [-dir d] [-threads n] [-depth i] [-topN N]? [-solr solrURL]"
Crawl命令相当于是inject, generate,fecth,parse,update,invertlinks等命令的组合使用,具体见源码.使用细节见scholr_search/books/nutch.pdf
?
3.安装solr
下载solr.1.4.1,解压
?
进入solr目录(我解压在/test-solr位置)
?
测试example是否能正常运行: cd example ;? java -jar start.jar
?
将$NUTCH_DIR/conf/schema.xml拷到/test-solr/example/solr/conf/schema.xml,并且将content对应的的stored标记改为true.
?
测试的example默认是利用jetty容器,在实际使用时,我改为利用tomcat容器,只需要建立一个映射,给出webapps和solr的主目录:
cd $TOMCAT_HOME/conf/Catalina/localhost/
vim test-solr.xml
"""
test-solr.xml的内容为:
<Context docBase="/test-solr/example/webapps/solr.war" debug="0" crossContext="true" >
??? <Environment name="solr/home" type="java.lang.String" value="/test-solr/example/solr" override="true" />?
?? </Context>
"""
$TOMCAT_HOME/bin/startup.sh
"""
然后打开浏览器,输入http://localhost:8080/test-solr/admin
"""
4.加入中文分词
我在建立solr工程时遇到了麻烦,折腾了三天未果,只好利用别人已经写好的paoding-analysis.jar和chinese-tokenizer.jar. 步骤为:
?
unzip solr.war
?
修改
test-solr.xml的内容为:
<Context docBase="/test-solr/example/webapps/solr" debug="0" crossContext="true" >
??? <Environment name="solr/home" type="java.lang.String" value="/test-solr/example/solr" override="true" />?
?? </Context>
?
"""
解压的缘故是两个jar包需要加入到WEB-INF/lib目录下,这个目录解压后才会看到
"""
cp $DIR/paoding-analysis.jar /test-solr/example/webapps/solr/WEB-INF/lib/
cp $DIR/chinese-tokenizer.jar /test-solr/example/webapps/solr/WEB-INF/lib/
?
vim /test-solr/example/solr/conf/schema.xml
"""
将type=text 处改为
<!--????? <tokenizer mode="most-words"/>
?
有的文章加入对query的修改,是因为将index和query的analyzer分开了,这里省略了analyzer标签,应该默认将两者都修改了。
"""
?
在/nutch-1.2目录下运行:
bin/nutch crawl urls -dir towns -depth 10 -threads 10 -topN 10 -solr http://localhost:8080/test-solr
(或者分开运行:
bin/nutch crawl urls -dir towns -depth 10 -threads 10 -topN 10
bin/nutch solrindex http://localhost:8080/test-solr towns/crawldb/ towns/linkdb/ towns/segments/*)
?
整个过程完成,可以通过http://localhost:8080/test-solr/admin 访问.
1 楼 backsnow 2011-03-10 还要记得改nutch-site.xml 2 楼 backsnow 2011-03-10 另外,修改regex-urlfilter.txt