in graphjet-core/src/main/java/com/twitter/graphjet/algorithms/counting/TopSecondDegreeByCount.java [161:195]
private void collectRightNodeInfo(Request request) {
for (Long2DoubleMap.Entry entry: request.getLeftSeedNodesWithWeight().long2DoubleEntrySet()) {
long leftNode = entry.getLongKey();
EdgeIterator edgeIterator = leftIndexedBipartiteGraph.getLeftNodeEdges(leftNode);
if (edgeIterator == null) {
continue;
}
int numEdgesPerNode = 0;
double weight = entry.getDoubleValue();
seenEdgesPerNode.clear();
// Sequentially iterating through the latest MAX_EDGES_PER_NODE edges per node
while (edgeIterator.hasNext() && numEdgesPerNode++ < RecommendationRequest.MAX_EDGES_PER_NODE) {
long rightNode = edgeIterator.nextLong();
byte edgeType = edgeIterator.currentEdgeType();
long edgeMetadata = edgeIterator.currentMetadata();
boolean hasSeenRightNodeFromEdge =
seenEdgesPerNode.containsKey(rightNode) && seenEdgesPerNode.get(rightNode) == edgeType;
if (!hasSeenRightNodeFromEdge
&& isEdgeUpdateValid(request, rightNode, edgeType, edgeMetadata)) {
seenEdgesPerNode.put(rightNode, edgeType);
updateNodeInfo(
leftNode,
rightNode,
edgeType,
edgeMetadata,
weight,
edgeIterator,
request.getMaxSocialProofTypeSize());
}
}
}
}