mongodb에서 mapreduce를 사용하여 PageRank를 실행하려고합니다.mongodb에서 PageRank 계산하기
내 문서는이 형식으로되어 있습니다 :
{
"_id" : "u: 10000",
"value" : [
[
"u: 10000",
"s: 985272",
1
],
[
"s: 985272",
"u: 10000",
1
],
[
"u: 10000",
"s: 303770",
1
],
[
"s: 303770",
"u: 10000",
1
]
]
}
는 지금은 첫 번째 단계는 키를 기준으로 링크를 수집하는 것입니다 생각합니다. 그러나 문서 당 여러 개의 아웃 바운드 링크가 있습니다. (이들은 모두 양방향으로 발생합니다). 여기
내지도하고 기능을 감소 :
m = function() {
for (var i = 0; i < this.value.length; i++){
var out = {};
out.out = this.value[i][1];
out.weight = this.value[i][2];
emit(this.value[i][0], [out]);
}
}
r = function(key, values){
var result = {
value: []
};
values.forEach(function(val) {
result.value.push({out: val.out, weight: val.weight});
});
return result;
}
문제는 내가 문서에 여러 배출량을 생산하고 방출하는 확실하지 않다입니다. 내가 같은 결과를 얻을으로 :
{
"_id" : "s: 1000082",
"value" : [
{
"out" : "u: 37317",
"weight" : 1
}
]
}
을 나는 문서 당 여러 항목을 기대합니다.
누구든지 아이디어가 있습니까? 도와 주시면 감사하겠습니다!
편집 :
나는 완전히 만족하지 않다, 예를 how do things like this work 하시나요?. reduce 결과는 emit 출력과 전혀 같지 않습니다.
필드 값이 무엇인지 명확히 할 수 있습니까? "s"와 "u"등 무엇입니까? –
그들은 이드와 함께 문서 (웹 페이지)의 단지 다른 유형입니다 ... – toofarsideways
아래 답변은 정확합니다 - 방출 된 값에 더 많은 필드를 추가하는 데 문제가 있다면, 나는 새로운 질문을 시작하는 것이 좋습니다. –