- 浏览: 282952 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (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 301ref:https://www.seozac.com/seo/ ... -
搜索引擎中的信息处理和概率论
2017-02-06 15:57 459info theory and maths use ... -
nutch 几种搜索布署
2011-12-29 13:21 8691。这是最简单的一种布署方式,通常用于简单测试。 ... -
nutch搜索架构关键类
2011-12-13 00:19 14todo -
nutch结合hadoop解説 RPC机制
2011-12-13 00:18 893todo -
nutch搜索架构关键类
2011-12-13 00:17 1134在整个crawl->recrawl ... -
访问hadoop数据时注意相对路径问题
2011-12-07 00:30 1421今天在nutch配置分布式搜索时出现搜索不到結果,背景是: ... -
nutch 发布时要注意的问题
2011-12-04 23:40 1857在利用Nutch自身的ant打 ... -
nutch 中的trie tree 算法简介
2011-11-18 14:18 936todoo -
nutch 配置文件详解
2011-11-17 16:58 2165下面来分析 一下,conf目录下各文件的作用是怎样的: cr ... -
nutch 分布式索引(爬虫)
2011-10-19 00:15 3845其实,全网抓取比intranet区别再于, 前者提供了较 ... -
nutch 分布式搜索-cluster-hdfs index
2011-10-17 02:14 1364此过程也很简单,步骤是: a.put the indexes ... -
nutch 分布式搜索-cluster-local index
2011-10-17 02:13 780此过程亦相当简单,只是修改一下search-servers.t ... -
nutch 分布式搜索-standalone mode
2011-10-17 01:47 967本地模式篇,其实就是相当 于之前图中的虚线部分。詳細如下 ... -
lucene boost 的誤解
2011-10-06 16:56 1051之前一直以为,无论在index或搜索时,如果boost为0,結 ... -
nutch对某个contentType文档进行解析的流程--html
2011-09-22 23:44 990经过上一遍contentType流程 介绍后,现在进入具体的 ... -
nutch对某个contentType文档进行解析的流程
2011-09-04 12:48 1669nutch支持对诸多的文档 ... -
nutch 处理robots.txt原理
2011-08-28 16:42 1708形如大多SE一样,在bot ... -
nutch analyzers 使用机制
2011-07-31 14:35 820一。索引时analyzer 我们知道,在Indexer ... -
nutch 数据增量更新
2011-07-22 19:25 3028以下是转载的执行recrawl的脚本(其实还是可以再优化的,比 ...
相关推荐
这部分源码涉及到查询解析、评分算法(如TF-IDF)和结果排序。 5. **分布式计算(Distributed Computing)**:Nutch充分利用了Hadoop的数据处理框架,将大型数据集的处理任务分布到多台机器上,实现了并行计算。...
对于初学者来说,详细注释的示例代码提供了很好的学习资源,有助于理解Lucene和Nutch的内部工作机制。同时,实战经验将使开发者具备构建自定义搜索引擎的能力,为大数据时代的信息检索提供强大的工具。
- **页面评分机制**:Nutch支持多种页面评分算法,如OPIC和LinkRank,这些机制有助于提高搜索结果的相关性和质量。学习笔记第11章提供了OPIC和LinkRank的具体实现细节。 - **Nutch 2.0的主要变化**:学习笔记的最后...
通过Nutch的爬取和预处理,以及Lucene的索引和查询机制,我们可以快速定位到包含目标关键词的文档,这对于信息检索和数据分析有着广泛的应用价值。对于开发者来说,深入理解这两个工具的工作原理和使用方法,将有助...
- **评分**:使用链接分析算法(如 PageRank)对页面进行评分。 - **索引**:将处理后的页面存入索引库。 - **重复检测**:通过比较新抓取的 URL 与已存在的 URL,防止重复抓取。 8. **搜索功能**: Nutch 不仅...
5. **评分机制(Scoring)**:Lucene通过TF-IDF算法和其他相关性计算方法,为搜索结果排序,最相关的文档优先展示。 6. **内存缓存与磁盘存储**:Lucene优化了内存和磁盘的使用,允许快速读取索引,同时保持索引的...
3. **索引和搜索**:Lucene的倒排索引原理、查询执行过程、评分机制以及相关性排名等核心概念。 4. **文本处理**:包括分词、去除停用词、词干提取等文本预处理技术,这些都是提高搜索质量的关键步骤。 5. **性能...
相比其他几种常见的Web抓取开源软件(如Web-Harvest、WCT、Heritrix),Nutch在抓取过程管理、网页评分、链接解析、内容解析、搜索功能、内容索引功能以及抓取内容完整性等方面表现出色,尤其是在内容索引功能方面,...
基于Nutch的Web网站定向采集系统,通过精准的种子站点选取、高效的抓取过程管理、有效的网页去噪和智能的新种子站点发现机制,能够在保证数据质量的同时,显著提升抓取效率。该系统为科学研究、数据分析和信息检索等...
第三章则可能涉及到查询处理,包括如何构建查询对象,执行查询,以及如何使用评分机制来排序搜索结果。此外,还会学习到布尔查询、短语查询、近似查询等不同类型的查询构造。 第四章和第五章可能涵盖更高级的主题,...
- Lucenechapter4和Lucenechapter5:深入讨论了Lucene的查询机制,包括查询解析、评分系统和结果排序。读者将学会如何构造复杂的查询表达式,以及如何调整搜索结果的相关性。 4. **高级特性** - Lucenechapter6至...
简介Sek - 一个类似 Nutch 的, 基于 Hadoop 的并行式爬虫框架.当前尚处于构思阶段.构思如下:日志功能.参数的可配置.设置种子 URL 时可以进行必要的配置, 如评分, 定义抓取间隔等.基于 正则表达式 的 URL 过滤.URL ...
- **强大的插件机制**:通过Nutch插件机制,可以根据不同需求灵活定制抓取和解析规则,提高系统使用性和开发效率。 3. **Solr的作用** - **分布式索引**:Solr集群能够在多台机器上并行执行,提高检索速度。 - *...
nutch是一个开源的网络爬虫项目,不仅能够抓取网页,还能解析网页内容、建立链接数据库、对网页进行评分,并创建solr索引。nutch的插件机制增强了其灵活性和可维护性,允许开发者根据需求定制抓取和解析规则,从而...