- 论坛徽章:
- 0
|
这是一个链接分析工具,借助 nutch/tools/DistributedAnalysisTool.java
做了一个封装,便于更方便的使用
nutch/tools/LinkAnalysisTool.java 上 RUN: mydb 3
进行3层链接分析
程序先打开webDB/stats 看有多少page,linke
一下三行代码可以看出 stats文件的内容
int version = (byte) in.read();
this.totalPages = in.readLong();
this.totalLinks = in.readLong();
然后根据分配的处理器数量和需要计算的page和link数,分配任务
chunkSize=totalPages / numProcesses; 就是每个进程参与计算的page
然后
for (int i = 1; i
计算每个进程应该从哪里开始计算
在\mydb\tmpdir-1146884784731-la下生成临时文件 assignment.0存放结果,
多进程的话, 会在分布式文件系统上生成更多的 assignment.1 , assignment.2 。。。。
在assignment.x文件中写入一些相关信息,结束 initRound函数, 完成准备工作
中 ,建立 tmpdir-1146884784731-la/scoreEdits.0.unsorted 存放未排序的临时结果。
对webDB中的每个page,先取出他的outlink,(吓一遍fetch之后,就可以用updatadb 重写 webdb ,把新抓到的outlink加进来)
然后根据初始的score 1来计算 Score和NextScore
在我的例子中某个page的outlink有21个,targerLink有15个, Score和NextScore分别是0.5和0.6 左右,
然后把这个21个outlink以及它的Score分别用ScoreWriter对象写入 score.unsort文件
然后把计算好的Score,NextScore 重新写回 webDB
在我的例子中,对2.5万个页面做了2层的链接分析, 大约每秒分析10个page,由于时间问题,没有完成,
这是一个比较耗时的工作, 但是对提高搜索结果质量无疑是大有帮助的
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/4906/showart_108838.html |
|