设为首页 收藏本站
查看: 933|回复: 0

[经验分享] 转:Nutch和Solr的集成方法

[复制链接]

尚未签到

发表于 2016-12-15 11:06:35 | 显示全部楼层 |阅读模式
Nutch和Solr的集成方法  
2011-06-27 13:47:23|  分类:默认分类|  标签:nutch  solr  集成  |字号 订阅




  本方案中,Solr作为处理搜索结果的源和入口,有效的减轻对Nutch的搜索负担,让Nutch负责她最擅长的工作:抓取(crawling)和提取(extracting)内容。使用Solr作为搜索后端,换句话说,就是允许使用所有Solr Server的高级特性,诸如:查询拼写检查(spell-check),搜索提醒(suggestion),数据复制(data-replication),查询缓存等等。
  Nutch和Solr的安装
  首先下载我们需要的软件,Apache Solr 和 Nutch。
  1、从官方下载Solr Version 1.3.0
  2、解压Solr安装包。
  3、下载Nutch Version 1.0
  4、解压Nutch安装包。
  5、配置Solr
  简单起见,我们以Solr Example中的配置为基础
  a、从apache-nutch-1.0/conf拷贝Nutch Schema到apache-solr-1.3.0/example/solr/conf目录下,覆盖掉已经存在的。
  我们希望允许Solr为搜索结果创建摘要,因此我们需要存储内容以便能够索引它。
  b、调整schema.xml,以便"content"字段的"stored"属性等于true。
  <field name="content" type="text" stored="true" indexed="true"/>
  另外,我们希望能够容易的调整查询的关联度,因此这里创建一个新的请求处理器(request handler)叫dismax。
  c、打开apache-solr-1.3.0/example/solr/conf/solrconfig.xml文件,把下面这段粘贴进去
  <requestHandler name="/nutch" class="solr.SearchHandler" >
  <lst name="defaults">
  <str name="defType">dismax</str>
  <str name="echoParams">explicit</str>
  <float name="tie">0.01</float>
  <str name="qf">
  content^0.5 anchor^1.0 title^1.2
  </str>
  <str name="pf">
  content^0.5 anchor^1.5 title^1.2 site^1.5
  </str>
  <str name="fl">
  url
  </str>
  <str name="mm">
  2&lt;-1 5&lt;-2 6&lt;90%
  </str>
  <int name="ps">100</int>
  <bool hl="true"/>
  <str name="q.alt">*:*</str>
  <str name="hl.fl">title url content</str>
  <str name="f.title.hl.fragsize">0</str>
  <str name="f.title.hl.alternateField">title</str>
  <str name="f.url.hl.fragsize">0</str>
  <str name="f.url.hl.alternateField">url</str>
  <str name="f.content.hl.fragmenter">regex</str>
  </lst>
  </requestHandler>
  6、启动Solr
  cd apache-solr-1.3.0/example
  java -jar start.jar
  7、配置Nutch
  a、打开apache-nutch-1.0/conf下的nutch-site.xml,用下面的内容(我们制定了蜘蛛的名称,激活插件,限制单机一次运行抓取的最大URL数为100)替换:
  <?xml version="1.0"?>
  <configuration>
  <property>
  <name>http.agent.name</name>
  <value>nutch-solr-integration</value>
  </property>
  <property>
  <name>generate.max.per.host</name>
  <value>100</value>
  </property>
  <property>
  <name>plugin.includes</name>
  <value>protocol-http|urlfilter-regex|parse-html|index-(basic|anchor)|query-(basic|site|url)|response-(json|xml)|summary-basic|scoring-opic|urlnormalizer-(pass|regex|basic)</value>
  </property>
  </configuration>
  b、打开apache-nutch-1.0/conf下的regex-urlfilter.txt,用下面的内容替换:
  -^(https|telnet|file|ftp|mailto):
  # skip some suffixes
  -\.(swf|SWF|doc|DOC|mp3|MP3|WMV|wmv|txt|TXT|rtf|RTF|avi|AVI|m3u|M3U|flv|FLV|WAV|wav|mp4|MP4|avi|AVI|rss|RSS|xml|XML|pdf|PDF|js|JS|gif|GIF|jpg|JPG|png|PNG|ico|ICO|css|sit|eps|wmf|zip|ppt|mpg|xls|gz|rpm|tgz|mov|MOV|exe|jpeg|JPEG|bmp|BMP)$
  # skip URLs containing certain characters as probable queries, etc.
  -[?*!@=]
  # allow urls in foofactory.fi domain
  +^http://([a-z0-9\-A-Z]*\.)*lucidimagination.com/
  # deny anything else
  -.
  8、创建一个种子列表(初始化的URL列表)
  mkdir urls
  echo "http://www.haoguoliang.com/" > urls/seed.txt
  9、将种子URL列表导入Nutch的crawldb(注意在nutch文件夹下执行)
  bin/nutch inject crawl/crawldb urls
  10、生成获取(fetch)列表,以便获取和分析内容
  bin/nutch generate crawl/crawldb crawl/segments
  以上命令在crawl/segments目录下生成了一个新的segment目录,里边存储了抓到的URLs,下边的指令里,我们需要最新的segment目录作为参数,存储到环境变量SEGMENT里:
  export SEGMENT=crawl/segments/`ls -tr crawl/segments|tail -1`
  现在,启动抓取程序真正开始抓取内容
  bin/nutch fetch $SEGMENT -noParsing
  接下来我们分析、解析抓取下来的内容
  bin/nutch parse $SEGMENT
  更新Nutch crawldb,updatedb命令会存储以上两步抓取(fetch)和分析(parse)最新的segment而得到的新的URLs到Nutch crawldb,以便后续的继续抓取,除了URLs之外,Nutch也存储了相应的页面内容,防止相同的URLs被反反复复的抓取。
  bin/nutch updatedb crawl/crawldb $SEGMENT -filter -normalize
  到此,一个完整的抓取周期结束了,你可以重复步骤10多次以便可以抓取更多的内容。
  11、创建超链库
  bin/nutch invertlinks crawl/linkdb -dir crawl/segments
  12、索引所有segments中的内容到Solr中
  bin/nutch solrindex http://127.0.0.1:8983/solr/crawl/crawldb crawl/linkdb crawl/segments/*
  现在,所有Nutch抓取的内容已经被Solr索引了,你可以通过Solr Admin执行查询操作了
  http://127.0.0.1:8983/solr/admin

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-314710-1-1.html 上篇帖子: Solr高效利用:Solr实现SQL的查询与统计 下篇帖子: solr 更新index的最佳实践
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表