我正在尝试用scala构建pagerank算法。
我这里有一个数据集下载表http://en.wikipedia.org/wiki/wikipedia:数据库下载
是维基百科的数据库。
我已经Map的标题和链接出现在标题页如下
graph =
TitleA, LinkB LinkC LinkD
TitleB, linkC
TitleD, linkA
a、 b,c表示它们具有相同的名称,但存在于标题区或链接区中。
现在,我需要删除标题中不存在的链接。
所以,输出应该是
corgraph =
TitleA, LinkB LinkD
TitleB, linkC
TitleD, linkA
从titlea中删除linkc。
这是我的代码供参考
val graph = lines.flatMap (line => {
val titlePattern = "<title>(.+?)</title>".r //define regex of title string out from <title> tag
val linkPattern = "\\[\\[(.+?)([\\|#]|\\]\\])".r //define regex of link string out from [[]] area
val title = titlePattern.findFirstMatchIn(line).get.group(1) // find title by defined regex
//find all link in pages and do map reduce
linkPattern.findAllIn(line).matchData.map(link => {
val corlink = link.group(1).replaceAll("<", "<").replaceAll(">", ">").replaceAll("&", "&").replaceAll(""", "\"").replaceAll("'", "\'")
val cortitle = title.replaceAll("<", "<").replaceAll(">", ">").replaceAll("&", "&").replaceAll(""", "\"").replaceAll("'", "\'")
(cortitle -> corlink)
})
}).map{ case(url, link) => if(graph.contains(link))(url -> link)}
以及错误消息
[error] PageRank.scala:28:recursive value graph needs type
[error] }).map{ case(url, link) =>
if(graph.contains(link))(url -> link)}(url -> link)}
有人能帮忙吗?谢谢。
暂无答案!
目前还没有任何答案,快来回答吧!