- 浏览: 275156 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (247)
- free talking (11)
- java (18)
- search (16)
- hbase (34)
- open-sources (0)
- architect (1)
- zookeeper (16)
- vm (1)
- hadoop (34)
- nutch (33)
- lucene (5)
- ubuntu/shell (8)
- ant (0)
- mapreduce (5)
- hdfs (2)
- hadoop sources reading (13)
- AI (0)
- distributed tech (1)
- others (1)
- maths (6)
- english (1)
- art & entertainment (1)
- nosql (1)
- algorithms (8)
- hadoop-2.5 (16)
- hbase-0.94.2 source (28)
- zookeeper-3.4.3 source reading (1)
- solr (1)
- TODO (3)
- JVM optimization (1)
- architecture (0)
- hbase-guideline (1)
- data mining (3)
- hive (1)
- mahout (0)
- spark (28)
- scala (3)
- python (0)
- machine learning (1)
最新评论
-
jpsb:
...
为什么需要分布式? -
leibnitz:
hi guy, this is used as develo ...
compile hadoop-2.5.x on OS X(macbook) -
string2020:
撸主真土豪,在苹果里面玩大数据.
compile hadoop-2.5.x on OS X(macbook) -
youngliu_liu:
怎样运行这个脚本啊??大牛,我刚进入搜索引擎行业,希望你能不吝 ...
nutch 数据增量更新 -
leibnitz:
also, there is a similar bug ...
2。hbase CRUD--Lease in hbase
其实nutch的评分机制有二部分,与通常的SE类似:
1。keywords匹配度
比如利用了lucene的similary机制,要索引和查询时均可定制。
2。page rank
这里有二个,
一是LinkAanlyzeScoring,作通常连接分析,但基本上都没有方法实现;不知道是否是opic的一个早期版本?
二是opic,即on-line importance computatioin。
这个与google的PageRanK是不同的,后者是off-line,可以说大大的不同。
包括inject,fetch,update,index等过程的score处理均在这样实现。
注意nutch使用的是一个varient of opic,所以其实它也不是严格按照其中的page所说来死套。
其中完整的opic代码如下 :
OPIC: On-line Page Importance Computation for each i let C[i] := 1/n ; for each i let H[i] := 0 ; let G:=0 ; do forever begin choose some node i ; %% each node is selected %% infinitely often H[i] += C[i]; %% single disk access per page for each child j of i, do C[j] += C[i]/out[i]; %% Distribution of cash %% depends on L G += C[i]; C[i] := 0 ; end
为什么pr这么重要呢?因为你搜索的上的就是找到合适,有用,规范的东西,或者说是high quality。这就是出发点,那么就有需要有机制去决策page的importance标准。其中质量高的pages不但要更新频繁些,就算在crawl阶段也要优先于是其它new discovered pages;再都就是搜索时更应该优先显示了。
当然百度也有自己的核心算法,所谓链接质量分析(李彦宏),不过觉得些东西大体上是类似的。自从很多论文,开源技术出来后大家也在模仿,说不定李彦宏也是模仿了xxx罢了!
最后还是来看看具体调用那些方法的地方,以便有问题时易于定位:
(注意QueryFilters是对具体的方法进行了代理,所以进入它分析即可)
一。injectedScore(url,datum)
>Injector.InjectorMapper中调用.注意这里是seed urls处理的地方。
如果url(per line in plain text)中没有指定score,则使用默认的1处理;
>FreeGenerator.FG(mapper)。当不需要首先添加到crawldb中而要生成fetchlist时使用。后续可能用到
filters:两者均无实现
二。generatorSortValue(url,datum,sort)
>Generator.Selector.map()。sort=1作为initSort,直接将inject的输出交给fitlers来处理
filters:两者均以datum.getScore() * sort。这样在输出时<sortvalue,datum>就产生了。
三。initialScore(url,datum) 对于新发现的urls設定
>FetcherThread.run() / handleRedirect() 。感觉就是在重定向时的设置?
>ParserOutputFormat.RecordWriter.write() 。(还是处于Fetcher阶段)它输出包括crawl_parse,parse_data,parse_data文件。
处理:将targetUrl置为status_link的datum.
>CrawlDbReducer 这是在crawldb update phase ,将新旧urls(包括crawldb/current,crawl_parse,crawl_fetch中的crawldatum)进行合并和状态更新。
处理:当状态为STATUS_LINKED才进行调用。
filters:均以设置为0(说是inlink的score会设置它)
passScoreBeforeParsing(Text url, CrawlDatum datum, Content content) copy score from datum to content for both filters.
>Fetcher.output() 在parsing一个页面的content前调用
>ArcSegmentCreator 同上
passScoreAfterParsing(Text url, Content content, Parse parse) copy score from content to parse for both filters.
>Fetcher.output() 在parsing一个页面的content后逐个url调用
>ArcSegmentCreator 同上
>ParseSegment.map() 在crawldb udpate前若需要parsing时调用;功能与fetcher.output()中一样
distributeScoreToOutlinks() 与updateDbScore()相对,将当前url 的crawl score分发所有outlinks。这过程应该先于updateDbScore()调用,因为理论上应该是先发现再被其它urls来update d。注意这里考虑了内链和外链的分开处理问题。
>ParserOutputFormat.RecordWriter.write() 。(还是处于Fetcher阶段 )在其中的initiateScore()后调用
updateDbScore(Text url, CrawlDatum old, CrawlDatum datum, List<CrawlDatum> inlinked)
OPICScoringFilter.java:
float adjust = 0.0f; //在已经存放的datum(url)的情况下,对所有后来的入链汇总scores到datum中 for (int i = 0; i < inlinked.size(); i++) { CrawlDatum linked = (CrawlDatum)inlinked.get(i); adjust += linked.getScore(); } if (old == null) old = datum; datum.setScore(old.getScore() + adjust);
>CrawlDbReducer.reduce() 在其中的initiateScore()后调用
indexerScore(Text, NutchDocument, dbDatum, fetchDatum, Parse, Inlinks, initScore) 将dbdatum中的score衰减,即power计算,然后再由initScore加权
>Indexer.index() -> IndexMapReduce.reduce()
references:
adaptive on-line page importance computation
发表评论
-
搜索引擎有多聪明?
2017-02-11 13:56 276ref:https://www.seozac.com/seo/ ... -
搜索引擎中的信息处理和概率论
2017-02-06 15:57 430info theory and maths use ... -
nutch 几种搜索布署
2011-12-29 13:21 8341。这是最简单的一种布署方式,通常用于简单测试。 ... -
nutch搜索架构关键类
2011-12-13 00:19 14todo -
nutch结合hadoop解説 RPC机制
2011-12-13 00:18 865todo -
nutch搜索架构关键类
2011-12-13 00:17 1096在整个crawl->recrawl ... -
访问hadoop数据时注意相对路径问题
2011-12-07 00:30 1392今天在nutch配置分布式搜索时出现搜索不到結果,背景是: ... -
nutch 发布时要注意的问题
2011-12-04 23:40 1823在利用Nutch自身的ant打 ... -
nutch 中的trie tree 算法简介
2011-11-18 14:18 862todoo -
nutch 配置文件详解
2011-11-17 16:58 2123下面来分析 一下,conf目录下各文件的作用是怎样的: cr ... -
nutch 分布式索引(爬虫)
2011-10-19 00:15 3814其实,全网抓取比intranet区别再于, 前者提供了较 ... -
nutch 分布式搜索-cluster-hdfs index
2011-10-17 02:14 1333此过程也很简单,步骤是: a.put the indexes ... -
nutch 分布式搜索-cluster-local index
2011-10-17 02:13 734此过程亦相当简单,只是修改一下search-servers.t ... -
nutch 分布式搜索-standalone mode
2011-10-17 01:47 937本地模式篇,其实就是相当 于之前图中的虚线部分。詳細如下 ... -
lucene boost 的誤解
2011-10-06 16:56 1020之前一直以为,无论在index或搜索时,如果boost为0,結 ... -
nutch对某个contentType文档进行解析的流程--html
2011-09-22 23:44 943经过上一遍contentType流程 介绍后,现在进入具体的 ... -
nutch对某个contentType文档进行解析的流程
2011-09-04 12:48 1637nutch支持对诸多的文档 ... -
nutch 处理robots.txt原理
2011-08-28 16:42 1683形如大多SE一样,在bot ... -
nutch analyzers 使用机制
2011-07-31 14:35 790一。索引时analyzer 我们知道,在Indexer ... -
nutch 数据增量更新
2011-07-22 19:25 2976以下是转载的执行recrawl的脚本(其实还是可以再优化的,比 ...
相关推荐
Nutch的插件机制...详细讲解了nutch的api 很有帮助
nutch插件机制 实例讲解 轻松学习 扩展nutch功能 随意添加扩展
Nutch是一个优秀的开放源代码的Web搜索引擎。虽然Nutch的页面排序方法比较合理,但是很多情况下仍然不能 满足需要。分析开源搜索引擎Nutch代码,研究了Nutch的页面排序方法。在Nutch原有的结构基础上提出了3种修改...
Nutch的插件机制分析,了解Nutch的插件机制
nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据nutch 爬虫数据
8.2 插件机制---plugin........45 8.2.1 什么是plugin......45 8.2.2 使用plugin的好处.......45 8.2.3 plugin工作原理...46 8.2.4 编写plugin47 8.3 API接口.......53 8.3.1使用Nutch API....53 8.3.2使用Open...
资源名称:Nutch相关框架视频教程资源目录:【】Nutch相关框架视频教程1_杨尚川【】Nutch相关框架视频教程2_杨尚川【】Nutch相关框架视频教程3_杨尚川【】Nutch相关框架视频教程4_杨尚川【】Nutch相关框架视频教程5_...
学习nutch 源码解读 轻松入门 搭建自己的nutch搜索引擎
eclipse配置nutch,eclipse配置nutch
nutch使用&Nutch;入门教程 pdf
1.1 Nutch 基本原理 1.1.1 Nutch 基本组成 1.1.2 Nutch 工作流程 1.2 Nutch 流程详解 1.2.1 Nutch 数据流程 1.2.2 Nutch 流程分析
Nutch诞生于2002年8月,是Apache旗下的一个用Java实现的开源搜索引擎项目,自Nutch1.2版本之后,Nutch已经从搜索引擎演化为网络爬虫,接着Nutch进一步演化为两大分支版本:1.X和2.X,这两大分支最大的区别在于2.X对...
Nutch搜索引擎·Nutch简单应用(第3期) 1.1 Nutch 命令详解 1.2 Nutch 简单应用
nutch插件,安装nutch插件,mysql与nutch
nutch1.2测试文档
Nutch开发入门 Nutch安装和使用 Nutch二次开发 很不错
nutch配置nutch-default.xml
NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.NUTCH安装步骤.
Nutch是用java语言开发的,基于Lucene的完整的网络搜索引擎,并采用插件机制进行设计,通过对扩展点的扩展, 用户可以开发自己的各类插件。由于Nutch的分词器对中文只进行单字切分,若要实现较好的对中文信息的搜索查 询,...
nutcher 是 Apache Nutch 的中文教程,在github上托管。nutch社区目前缺少教程和文档,而且教程对应版本号较为落后。nutcher致力于为nutch提供一个较新的中文教程和文档,供开发者学习。 github地址: ...