nutch集成solr和中文分词
nutch集成solr和中文分词
一、构建nutch环境
1. 设置代理
由于nutch使用ant构建,ant调用ivy,会从maven仓库中下载依赖包,因此若公司需要代理才能上网,需要设置代理,如果公司不需要代理即可上网,此步骤直接省略.
总结设置代理遇到的几个坑:
- 强制使用系统代理,即 ant -autoproxy , 结果失败!
- 修改 build.xml , 增加 setproxy ,设置代理,结果失败!
- 设置 ANT_OPTS ,添加选项
- -Dhttp.proxyHost=http://proxy.xxx.com
- -Dhttp.proxyPort=xxx , 结果失败!
- 传递 http_proxy ,结果失败!
失败原因: proxyHost
只需要包括主机名,而不需要指定协议
成功编译为修改build.xml
文件,设置代理,内容如下:
<target name="myproxy">
<setproxy proxyhost="proxy.xxx.com" proxyport="913" />
</target>
并修改ivy-init
指令,如下:
<target name="ivy-init" depends="ivy-probe-antlib, ivy-init-antlib,myproxy" description="--> initialise Ivy settings">
<ivy:settings file="${ivy.dir}/ivysettings.xml" />
</target>
2. 设置hadoop环境
若只是构建单机模式,此步骤省略!
否则需要设置并export HADOOP_HOME
环境变量:
export HADOOP_HOME=${HADOOP_HOME:-/opt/hadoop}
echo $HADOOP_HOME
3. nutch配置
在编译之前首先需要配置nutch,每次更新配置文件,都需要重新编译!
配置文件位于$NUTCH_HOME/conf
下,务必设置http.agent.name
,否则编译后不能运行, 编辑conf/nutch-site.xml
, 内容为:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>http.agent.name</name>
<value>My Spider</value>
</property>
</configuration>
如果需要设置nutch运行时代理,需要配置代理,修改文件$NUTCH_HOME/conf/nutch-default.xml
, 修改http.proxyHost
和http.proxyPort
值,内容如下:
<property>
<name>http.proxy.host</name>
<value>proxy.xxx.com</value>
<description>The proxy hostname. If empty, no proxy is used.</description>
</property>
<property>
<name>http.proxy.port</name>
<value>xxx</value>
<description>The proxy port.</description>
</property>
4.编译构建nutch
在此之前,请确保以上步骤已经正确完成,否则会导致编译失败或者运行失败!
编译:
ant -v runtime
构建开始,大约需要30分钟的时间
二、集成solr
目前solr的版本是5.x,但好像5.x版本差别较大,nutch没有集成支持!因此我们使用当前的4.x版本,目前该版本的latest是4.10.4,点击此处下载.
1.初始化
解压缩,复制example/solr/collection1下的core collection1
为nutch
:
cp -rf collection1 nutch
并修改$SOLR_HOME/example/solr/nutch/core.properties
文件,设置name为nutch:
name=nutch
把$NUTCH_HOME/conf/schema-solr4.xml
复制到$SOLR_HOME/example/solr/nutch/conf
下,并重命名为schema.xml
:
cp $NUTCH_HOME/conf/schema-solr4.xml $SOLR_HOME/example/solr/nutch/conf/schema.xml
2. 修改配置
此时启动solr会出现以下错误:
org.apache.solr.common.SolrException:org.apache.solr.common.SolrException: copyField dest :'location' is not an explicit field and doesn't match a dynamicField
应该是配置文件schema.xml的一个bug, 修复办法为在<fields>
下增加一个location field
, 内容为:
<field name="location" type="location" stored="false" indexed="true" multiValued="true"/>
若没有_version
属性,则增加_version_
属性:
<field name="_version_" type="long" indexed="true" stored="true"/>
3. 增加中文分词
首先从google code上下载IKAnalyzer,下载版本为IK Analyzer 2012FF_hf1.zip
,如果被GFW, 点击此处下载。
解压缩文件,把IKAnalyzer2012FF_u1.jar文件复制到$SOLR_HOME/example/solr-webapp/webapp/WEB-INF/lib
,把IKAnalyzer.cfg.xml和stopword.dic复制到$SOLR_HOME/example/solr/nutch/conf
,与schema.xml一个目录下:
cp IKAnalyzer2012FF_u1.jar $SOLR_HOME/example/solr-webapp/webapp/WEB-INF/lib
cp IKAnalyzer.cfg.xml stopword.dic $SOLR_HOME/example/solr/nutch/conf
修改core的schema.xml,在配置项间加一段如下配置:
<fieldType name="text_cn" class="solr.TextField">
<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer"/>
</fieldType>
在这个core的schema.xml里面配置field类型的时候就可以使用text_cn
<field name="name" type="text_cn" indexed="true" stored="true" multiValued="true" />
启动solr服务
cd $SOLR_HOME/example
java -jar start.jar
浏览器访问http://172.16.182.23:8983/solr/#/nutch,在左下边点击Analysis
连接,选择Analyse Fieldname / FieldType
为text_cn
,在Field Value (Index)
下输入:
我喜欢solr
然后点击蓝色按钮Analyse Values
,查看效果,看是否正确分词!
三、单机运行测试
具体过程可以查看官方教程 。
总结过程如下:
1. 创建种子列表
mkdir urls
cd urls
touch seeds.txt
echo "http://nutch.apache.org/" >> seeds.txt # 每行一个URL
2.使用crawl
脚本运行
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch urls/ TestCrawl/ 2
3. 验证结果
打开http://localhost:8983/solr/,点击solr admin
, 在Querty String
输入nutch
, 点击Search
查看效果
四、分布式运行
与单机过程类型,首先创建urls
目录作为种子url,然后上传到hdfs上:
mkdir urls
cd urls
echo "http://apache.org" >>seeds.txt
hdfs dfs -put urls
假定solr已经配置完成,url为localhost:8983
运行以下命令运行:
cd $NUTCH_HOME/runtime/runtime/deploy/
bin/crawl -i -D solr.server.url=http://localhost:8983/solr/nutch urls/ TestCrawl/ 2
nutch集成solr和中文分词的更多相关文章
- Solr 配置中文分词器 IK
1. 下载或者编译 IK 分词器的 jar 包文件,然后放入 ...\apache-tomcat-8.5.16\webapps\solr\WEB-INF\lib\ 这个 lib 文件目录下: IK 分 ...
- solr配置中文分词器
配置IK分词器 在/opt/solr-7.7.1/server/solr-webapp/webapp/WEB-INF/lib目录中加入IK分词器的jar包 在/opt/solr-7.7.1/serve ...
- Solr安装中文分词器IK
安装环境 jdk1.7 solr-4.10.3.tgz KAnalyzer2012FF_u1.jar tomcat7 VM虚拟机redhat6.5-x64:192.168.1.201 Xshell4 ...
- Solr整合中文分词组件IKAnalyzer
我用的Solr是4.10版本, 在csdn下载这个版本的IKAnalyzer:IK Analyzer 2012FF_hf1.zip 解压后目录如下: (1)这里还用solr自带的example实验分词 ...
- 给Solr配置中文分词器
第一步下载分词器https://pan.baidu.com/s/1X8v65YZ4gIkNQXsXfSULBw 第二歩打开已经解压的ik分词器文件夹 将ik-analyzer-solr5-5.x.ja ...
- solr配置中文分词器——(十二)
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqcAAAGzCAIAAACdKClDAAAgAElEQVR4nOydd5gUxdbGx5xASZKXLB
- 关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造)
关于Solr搜索标点与符号的中文分词你必须知道的(mmseg源码改造) 摘要:在中文搜索中的标点.符号往往也是有语义的,比如我们要搜索“C++”或是“C#”,我们不希望搜索出来的全是“C”吧?那样对程 ...
- windows 上配置solr5.2.1+solr4.3+中文分词器
搭建5.2.1 1.下载 Tomcat解压后的目录为 D:\Program Files\Apache Software Foundation\apache-tomcat-8.0.22 solr解压后的 ...
- 【Lucene3.6.2入门系列】第14节_SolrJ操作索引和搜索文档以及整合中文分词
package com.jadyer.solrj; import java.util.ArrayList; import java.util.List; import org.apache.solr. ...
随机推荐
- OpenGL Download
{ https://www.opengl.org/ }
- YII 中加入短信接口的函数
public function smsto($telphone,$message) { //短信接口用户名 $uid,如果没有或不能发送请与客服联系 $uid = 'zyd'; //短信接口密码 $p ...
- PHP FILTER_SANITIZE_SPECIAL_CHARS 过滤器
定义和用法 FILTER_SANITIZE_SPECIAL_CHARS 过滤器对特殊字符进行 HTML 转义. 该过滤器用于转义 "<>& 以及 ASCII 值在 32 ...
- PHP FILTER_VALIDATE_BOOLEAN 过滤器
定义和用法 FILTER_VALIDATE_BOOLEAN 过滤器把值作为布尔选项来验证. Name: "boolean" ID-number: 258 可能的返回值: 如果是 & ...
- LUOGU P2408 不同子串个数(后缀数组)
传送门 解题思路 后缀数组求本质不同串的裸题.\(ans=\dfrac{n(n+1)}{2} -\sum height[i]\). 代码 #include<iostream> #inclu ...
- Jeecg中通过Spring_AOP+注解方式实现日志的管理
转载;https://blog.csdn.net/ma451152002/article/details/77234236 Jeecg中通过Spring_AOP+注解方式实现日志的管理 一.设计思路 ...
- XML 扩展部分
引入命名空间 xmlns DTD缺点 1.不支持命名空间 2.支持的数据类型很少 3.DTD不可扩展 4.DTD不遵循XML规范 DTD的优点 简洁 schema 通过schema来解决DTD的不足 ...
- 7. Jmeter-逻辑控制器介绍与使用
逻辑控制器介绍与使用 如果(if)控制器 事物控制器 循环控制器 while controller critical section controller foreach控制器 include con ...
- DQL 数据查询语言 show
2.show show databases; 查看所有的库 show tables; 查看当前库的所有的表 show tables from database; 查看指定的库下的所有表 show pr ...
- 【一】Jmeter接口自动化测试系列之参数化方法
Jmeter作为虽然作为一款和LoadRunner相媲美的性能测试工具,但参数化功能实在不咋地,这里我大概总结了一下Jmeter的参数化方法! 至于参数化的用途,我这里就不多说了,做测试的都明白吧!本 ...