- 浏览: 283677 次
- 性别:
- 来自: 广州
最新评论
-
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
文章列表
以下是转载的执行recrawl的脚本(其实还是可以再优化的,比如参数和备份处理过程等
),来对比 一下与普通的crawl有啥区别。
# runbot script to run the Nutch bot for crawling and re-crawling.
# Usage: bin/runbot [safe]
# If executed in 'safe' mode, it doesn't delete the temporary
# directories generated during crawl. This might be helpful ...
其实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 搜索site dedup
- 博客分类:
- nutch
这个版本发现有个大大的bug,就是搜索时同一页面出现重复,不同页面也出现重复。即使有check dedup功能,也不起作用。
后来把代码修改一个才行,被搞晕。。。
其实关键代码就在于NutchBean.search(query)中。以下来分析一下。
public Hits search(Query query) throws IOException {
if (query.getParams().getMaxHitsPerDup() <= 0) // disable dup checking
retu ...
3.3-2011.7
Highlights of the Lucene release include:
The spellchecker
module now includes suggest/auto-complete functionality,
with three implementations: Jaspell, Ternary Trie, and Finite State.
Support for merging results from multiple ...
了解了local search ,那么进行distributed search也是相当简单的。只涉及几台机器的搜索,归并服务而已。
图中虚线表示采用local fs情况,即每台机器放自己的index,segmenets(注意它也也是可以分布式)
references:
nutch1.0分布查询
nutch搜索时进行了querys优化处理,包括缓存等。
为了对实际的搜索过程进行分析,让我们来对现成的搜索代码进行分析。
一。流程
二。分析
1.initiated nutch query
利用Query来parse生成,具体分成三步:
*NutchAnalysis.parseQuery() ...
plugins 机制
- 博客分类:
- nutch
觉得这块也是蛮重要的,所以得要认真学了。
但检索到网上讲得不是很清楚,要么就是背书一样;要么 就是没深入到点子上。
这里可以说 是作为一种扩展吧,希望可以对那么有所额外的补充。
一.概念
PluginClassloader:利用self-defined的来指定具体的loader,只是名称变了,其实是URLClassLoader,因为plugin所依賴 的libs及files均转换file to url形式来加载的。
PluginRepository:plugin的管理类,可以说是代理吧,重头戏的是将所有的plugin.xml解析封装,所以它包含很多形如
Plug ...
索引过程-merge index
- 博客分类:
- nutch
是的,这部分没有使用job,这点我也想到了:)
功能:
将由之前多个reduces index后(严格来说是dedup后)进行索引 合并 ;
将dedup后的deleted flags index进行清除;
也许会问,为什么要合并 呢?对了,对于构建一个分布式搜索系统来说这一步是不需要的,严格来说是"no"的,因为这步是作用一个intract net crawler
来作为最后一步处理的。
过程:
将hdfs/local上的多份索引添加 到inexwriter中;
调用lcuene内置的merger;
将生成的索引 写入local tmp下 ...
索引过程-delete duplicates
- 博客分类:
- nutch
去重过程同样很简单,不过需要些技巧。
正如你想的一样,在入手之前我自己也分析,怎样根据url & md5去重呢?去重又怎样实现呢?
*其中我当时想法跟job1(见下面)做法是相近的:url+time;
*而md5去重时我又觉得使用md5+time亦未尝不可,因为当时我没有考虑到score因素,但可以断定的是不能使用md5作为distinct,因为这就是题目要求;
*至于怎样去删除索引 ,当时也没有考虑:)
让我们先分析一个删除例子:
A多个urls中,如果存在相同的urls,只取最新的一个;
B如果存在相同md5的urls,只保留评分最高或url最短的一 ...
索引过程-index
- 博客分类:
- nutch
可以说这个过程就是一个"shuffle"的过程,然后进行index操作。
流程:
詳細过程:
input
: 这里有几个文件,来分析各文件的作用
crawl-fetch:当获取不到last-midified time时,用来fetch time代替
crawl-parse:no use
parse-data:conten-type;date等索引数据
parse-text:整个page全文检索
linkdb:取出指向当前url的所有的anchors进行索引
crawldb:获取之前score用以计算新的score
...
任务是:inverted link map
此过程也是比较简单,不过代码好像有点问题。。
1.inverted job
input:将segments下所有segs的parse_data作为输入。<url ,ParseData>
M:将<fromUrl,toUrls> --> <toUrl,fromUrl> list,即倒相了。
C&R:限制同一target url的inlinks数。
output format:MapFileOutputFormat。<url,inlinks>
[2.merged job] ...