Linux上 Nutch 1.3 + Solr 3.4.0 + Tomcat6.0 搜索引擎单节点搭建笔记

来源:互联网 发布:电视机怎么连接网络 编辑:程序博客网 时间:2024/04/26 19:30

Linux上 Nutch 1.3 + Solr 3.4.0 + Tomcat6.0

搜索引擎单节点搭建笔记

  

        Nutch 是apache下的一款开源web搜索引擎,而Solr则是Apache下的一款基于Lucene的企业级开源全文搜索平台,本身不具有网页爬取功能。从Nutch 1.3 起,Nutch集成了Solr的索引框架,通过Solr为Nutch爬取到的数据建立索引。这里仅基于对网上资料的参考及实际配置经验总结一下在Ubuntu10.10上单节点集成Nutch+Solr,并通过Tomcat进行部署的配置过程,前提是假设已经在本机安装JDK并可以正常使用。具体Nutch 1.3代码分析可以参考lemo的《Nutch 1.3学习笔记》http://blog.csdn.net/amuseme_lu/article/category/330217


一、下载解压 Nutch,Solr及 Tomcat


Nutch:http://www.apache.org/dyn/closer.cgi/nutch/

Solr:http://www.apache.org/dyn/closer.cgi/lucene/solr/

Tomcat:http://tomcat.apache.org/download-60.cgi

假设分别解压到/home/nutch-1.3   /home/apache-solr-3.4.0   /home/apache-tomcat-6.0.33


二、配置 Nutch 1.3


不同版本的Nutch的配置方式有所区别,这里的配置过程基本上是基于Nutch官方网站提供的配置方法:http://wiki.apache.org/nutch/NutchTutorial

解压完成后的Nutch 1.3 可以在nutch-1.3/runtime/local中看到已经编译好的Nutch文件,如果对代码进行过修改可以下载Ant 通过根目录下的build.xml 对源代码重新进行编译。


进入runtime/local/bin 文件夹执行


#./nutch.sh


若显示Usage则说明安装成功。


修改conf/nutch-site.xml文件,在<configuration> </configuration>间添加


<property>

 <name>http.agent.name</name>

 <value>My Nutch</value>

</property>


 My Nutch可以自定。


创建存放待爬取的url列表文件的文件夹,并在文件夹下创建文本文件,将爬取的url写入文本文件中,每条一行。例如创建local/urls,在urls 下创建url.txt文件写入


http://nutch.apache.org/

http://www.baidu.com/


修改conf/regex-urlfilter.txt 文件


# skip URLs containing certain characters as probable queries, etc.

-[?*!@=]


如果链接中包括括号内的符号就会被跳过不爬取,可以根据自己的需要修改


# accept anything else

+.


nutch支持通过正则表达式对url过滤,例如将+.改成 +^http://([a-z0-9]*\.)*nutch.apache.org/则会将爬取范围限制在nutch.apache.org下。创建存放爬取到的网页数据的文件夹,最好避免使用比较特殊的名字为文件夹命名,以防止出现不知名的错误。假设在local/ 下创建nutchDatabase文件夹。


三、配置 Solr 3.4.0


Solr安装完成后在/example 下有已经编译好的文件,在/example下执行


#java -jar start.jar


可以直接运行Solr,Solr默认端口是8983,如果在浏览器中输入http://localhost:8983/solr/admin/ 可以看到Solr的界面说明安装成功了。如果希望用Solr为Nutch建立索引则需要将Nutch  runtime/local/conf 下的schema.xml文件复制到Solr的/example/solr/conf 下覆盖原文件。schema.xml设置了索引的字段,把content项后面的stored="false" 改为 stored="true"   后在搜索返回值中就会包含含有关键字的具体内容。


四、用 Nutch爬取网页


在runtime/local下执行


#bin/nutch crawl


可以看到参数表<urlDir> -solr <solrURL> [-dir d] [-threads n] [-depth i] [-topN N]

crawl参数表示一次性的爬取网页完成索引,分步运行的参数通过


#bin/nutch


查看

在上面的参数表中:


<urlDir> 存放url的文本文件所在文件夹

<solrURL> Solr的url地址,默认是http://localhost:8983/solr/

[-dir d] 存放爬取到的数据的文件夹

[-threads n] 同时爬取的线程数量

[-depth I] 从最初页面起,爬取的链接深度

[-topN N] 每层深度的页面中爬取的最大连接数


方括号表示参数可选,可以不设置。

如果没有运行Solr   可以不添加 -solr <solrURL> ,这样就不会为爬取到的数据建立索引,可以在爬取完成后运行Solr 再执行


#./nutch solrindex <solr url> <crawldb> <linkdb> (<segment> ... | -dir <segments>)


为数据建立索引。

<crawldb> <linkdb> <segments> 分别为数据文件夹下的几个子文件夹,这里的segment和segments 并不是指nutchDatabase   下的 segments   文件夹,而是 segments   的子文件夹。 如果对爬取到的所有数据建立索引则执行


#bin/nutch solrindex http://localhost:8983/solr/ nutchDatabase/crawldb/nutchDatabase/linkdb/ -dir nutchDatabase/segments/*/


索引文件会建立在Solr的example/solr/data/index 下,可以下载luke查看索引结果


五、用 Solr搜索


通过http://localhost:8983/solr/admin访问Solr的主界面后可以在Query String输入关键字中进行搜索,在FULL INTERFACE下可以看到一些搜索选项,搜索选项同样可以在URL中直接输入。http://wiki.apache.org/solr/QueryParametersIndex下有一个query的参数列表。搜索结果会默认以xml文件进行返回。例如经过之前的爬取索引后对baidu进行搜索可以得到如图的返回结果。


六、通过 Tomcat部署 Solr


Sorl默认使用Jetty作为servlet容器,这里将servlet容器改为Tomcat

http://www.ibm.com/developerworks/cn/java/j-solr1/index.html#    是 Lucene Java 项目的提交人和发言人写的一篇Solr安装配置说明,文章中提供了三种更改容器的方法。我用的是在另一篇文章中看到的Tomcat映射的方法。

在apache-tomcat-6.0.33/conf/Catalina下建立solr.xml文件写入


<?xml version="1.0" encoding="utf-8"?>

<Context docBase="/home/samuel/server/apache-solr-3.4.0/example/webapps/solr.war"

debug="0" crossContext="true">

  <Environment name="solr/home" type="java.lang.String"

value="/home/samuel/server/apache-solr-3.4.0/example/solr" override="true"/>

</Context>


docBase 是solr的WAR文件绝对路径,value 是solr中包含conf 及data等文件夹的目录的绝对路径。可是经过映射之后在webapps文件夹下依然会生成一个未打包的solr文件夹,应该是将solr的WAR文件自动解压到了tomcat下,设置完后就可以使Solr与Tomcat一起启动,默认http://localhost:8080/solr访问Solr。


ID:sikangtina



原创粉丝点击