利用nutch、hbase和solr搭建搜索引擎
来源:互联网 发布:徕卡全站仪数据导出 编辑:程序博客网 时间:2024/04/26 06:24
我感觉搜索引擎是互联网界最伟大的技术,它让我们在网上查询变得异常方便。
公司近期需要搭建一个站内搜索引擎,用来方便客户查询数据。借此机会学习下搜索引擎的搭建和原理。
开源界最完善的开源环境就是利用nutch、hbase与solr搭配的。nutch用来爬取数据,hbase存取数据,solr建立索引并支持在线搜索。
由于nutch只能在类unix操作系统下运行,所以建议安装linux操作系统或其他类unix操作系统。我安装的是linuxmint17。
配置nutch相关的项目都需要依赖jdk,所以要自己安装jdk,从oracle官网下载相关jdk,建议使用jdk1.7版本。安装及配置环境变量请从网络上查找,不再赘述。
1、hbase环境搭建
从官网下载hbase安装包:http://www.apache.org/dyn/closer.cgi/hbase/
我下载的版本为hbase-0.94.27,解压到指定目录下,我在我的home目录下建立App目录,把自己解压安装的绿色软件放到此目录下。
我们把hbase的主目录成为$HBASE_HOME。
解压后,需要修改配置文件$HBASE_HOME/conf/hbase-site.xml,在节点<configuration>内添加如下配置:
<property> <name>hbase.rootdir</name> <value>file://$HBASE_HOME/data/hbase</value> </property> <property> <name>hbase.zookeeper.property.dataDir</name> <value>$HBASE_HOME/data/zookeeper</value> </property>
切换到$HBASE_HOME目录下,执行服务启动命令:
./bin/start-hbase.sh
即可启动服务,通过浏览器,访问如下网址:http://localhost:60010/master-status
若可以访问如下页面,说明启动成功:
hbase有自己的shell,可以通过shell来对数据进行操作,进入shell的命令如下:
首先要进入$HBASE_HOME主目录,然后执行命令
./bin/hbase shell进入shell后,就可以进行数据操作了,我作为测试,常用删除数据表的命令,有两条命令,先执行如下命令:
disable 'table_name'然后执行删除命令
drop 'table_name'其他命令请参考官方相关文档。
2、nutch-2.3环境搭建
当前版本为nutch-2.3,2.x版本没有已编译好的安装包,仅有源代码,需要自己编译。可能是因为在编译之前需要修改配置文件,而编译好的很多文件都依赖于修改的配置文件。nutch的编译需要ant,所以需要安装ant并配置环境变量。
从官方下载源代码:http://nutch.apache.org/downloads.html
解压到指定目录下,在此把nutch主目录称为$NUTCH_HOME。
nutch是通过ivy来管理包的依赖的,通过命令行进入$NUTCH_HOME,通过vim打开ivy.xml文件
vim ./ivy/ivy.xml去掉如下代码的注释:
<dependency org="org.apache.gora" name="gora-hbase" rev="0.5" conf="*->default" />
保存::wq
然后打开配置文件:./conf/gora.properties
vim ./conf/gora.properties添加如下代码:
<span style="color: rgb(51, 51, 51); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">gora</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.datastore</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.default</span><span style="color: rgb(51, 51, 51); font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">=org</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.apache</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.gora</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.hbase</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.store</span><span class="hljs-preprocessor" style="color: rgb(68, 68, 68); box-sizing: border-box; font-family: 'Source Code Pro', monospace; font-size: 14px; line-height: 20.2999992370605px; white-space: pre; background-color: rgba(128, 128, 128, 0.0470588);">.HBaseStore</span>
<span style="font-family: Arial, Helvetica, sans-serif;">保存 :wq</span>
打开配置文件./conf/nutch-site.xml
添加如下内容:
<property> <name>storage.data.store.class</name> <value>org.apache.gora.hbase.store.HBaseStore</value> <description>Default class for storing data</description></property><property><name>http.agent.name</name><value>Your Nutch Spider</value></property><property><name>http.accept.language</name><value>zh-cn, en-us,en-gb,en;q=0.7,*;q=0.3</value><description>*</description></property><property><name>parser.character.encoding.default</name><value>utf-8</value><description>*</description></property><property><name>storage.data.store.class</name><value>org.apache.gora.sql.store.SqlStore</value><description>*</description></property><property><name>generate.batch.id</name><value>*</value></property>
保存。
配置完成,编译nutch,在主目录下,运行如下命令:
ant runtime由于nutch依赖的很多都需要从网上下载,所以编译比较慢,需要耐心等待。若编译不成功,多数都是由于依赖的包没有下载成功,请多编译几次。
编译好后,主目录下就会多了两个目录build和runtime。
编译好的程序在runtime目录下,并且此目录下有两个文件夹:deploy和local,分别代表两种模式:部署模式和本地模式。
我们这里仅使用本地模式,部署模式请参考:http://blog.csdn.net/jediael_lu/article/details/42058553
3、solr环境搭建
从官网下载solr安装包:http://archive.apache.org/dist/lucene/solr/
由于nutch-2.3的$NUTCH_HOME/conf/schema.xml中指定支持solr4.x的版本,所以我下载的版本为:solr-4.9.1
解压到指定目录,我们把solr主目录称为$SOLR_HOME。
首先备份配置文件$SOLR_HOME/example/solr/collection1/conf/schema.xml
然后把$NUTCH_HOME/runtime/local/conf/schema.xml拷贝到$SOLR_HOME/example/solr/collection1/conf目录下,覆盖schema.xml文件。
此文件主要是抓取的数据结构定义。
配置完成后,就可以启动solr服务了。进入$SOLR_HOME/example下,执行如下命令:
java -jar start.jar通过浏览器打开网址:http://localhost:8983/solr,显示如下界面,说明配置成功:
在昨天的core Selector中选择collection1,里面有通过solr执行查询和编辑功能。
清除索引
1、打开documents,在页面里选择Document Type 为XML,然后在Documents里输入:
清除指定索引:
<delete><query>id:1</query></delete><commit/>
清除所有索引:
<delete><query>*:*</query></delete><commit/>
4、开启服务
hbase 服务和solr服务都启动后,就可以通过nutch抓取数据了。
在目录$NUTCH_HOME/runtime/local下建立urls文件夹,并在此文件夹下建议seed.txt文件,里面保存的是要抓取的网站地址,例如:http://www.cnblogs.com
然后执行./bin/crawl命令抓取数据,命令格式如下:
Usage: crawl <seedDir> <crawlID> [<solrUrl>] <numberOfRounds><seedDir>:放置种子文件的目录<crawlID> :抓取任务的ID<solrURL>:用于索引及搜索的solr地址<numberOfRounds>:迭代次数,即抓取深度
例如:
./bin/crawl ./urls cnblogs http://localhost:8983/solr 2命令执行过后,在hbase的站点可以查到相应数据结构,如下图:
在solr站点可以搜索相应数据,如下图:
5、总结
- 利用nutch、hbase和solr搭建搜索引擎
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之Nutch2.2.1
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之Hbase-0.94.27.搭建
- nutch/solr/lucene//hadoop/hbase 搜索引擎
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之Hadoop1.2.1搭建
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎之搭建solr4.9.1
- 使用 Hadoop,Nutch ,Hbase,Solr 搭建搜索引擎抓取并测试搜索结果
- Nutch + Solr + Hadoop 搭建分布式搜索引擎详细教程
- [Nutch]Nutch2.3+Hadoop+HBase+Solr在Ubuntu环境搭建
- hadoop+nutch+solr搜索引擎配
- nutch搜索引擎的搭建
- 从零开始搭建nutch搜索引擎
- 【Nutch2.2.1基础教程之2.2】集成Nutch/Hbase/Solr构建搜索引擎之二:内容分析
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- 【Nutch2.2.1基础教程之2.2】集成Nutch/Hbase/Solr构建搜索引擎之二:内容分析
- 【Nutch2.3基础教程】集成Nutch/Hadoop/Hbase/Solr构建搜索引擎:安装及运行【集群环境】
- solr 搜索引擎搭建和使用 (一)
- 集成Nutch和Solr
- oracle shutdown没有反应解决
- 29数组中出现次数超过一半的数字
- Window环境下安装FSL
- backbond是什么
- 优先级队列
- 利用nutch、hbase和solr搭建搜索引擎
- 缩进与对齐——正确地使用Tab和空格
- form表单提交数据显示乱码
- linux 下 读取 jpeg 图片 - 代码片段
- 浅析C#调用WebService实例和开发
- bootstrap 基础知识学习(导航+其他)
- Unity3d中的属性(Attributes)整理
- 算法五:图的割点和桥
- 安卓各种设置页面打开