mirror of
https://github.com/twitter/the-algorithm.git
synced 2024-06-02 09:18:49 +02:00
ef4c5eb65e
Please note we have force-pushed a new initial commit in order to remove some publicly-available Twitter user information. Note that this process may be required in the future.
34 lines
1.1 KiB
Scala
34 lines
1.1 KiB
Scala
package com.twitter.recos.user_video_graph.util
|
|
|
|
import com.twitter.graphjet.algorithms.TweetIDMask
|
|
import com.twitter.graphjet.bipartite.api.BipartiteGraph
|
|
|
|
object GetAllInternalTweetIdsUtil {
|
|
|
|
def getAllInternalTweetIds(tweetId: Long, bipartiteGraph: BipartiteGraph): Seq[Long] = {
|
|
val internalTweetIds = getAllMasks(tweetId)
|
|
sortByDegrees(internalTweetIds, bipartiteGraph)
|
|
}
|
|
|
|
private def getAllMasks(tweetId: Long): Seq[Long] = {
|
|
Seq(
|
|
tweetId,
|
|
TweetIDMask.summary(tweetId),
|
|
TweetIDMask.photo(tweetId),
|
|
TweetIDMask.player(tweetId),
|
|
TweetIDMask.promotion(tweetId)
|
|
)
|
|
}
|
|
|
|
private def sortByDegrees(
|
|
encodedTweetIds: Seq[Long],
|
|
bipartiteGraph: BipartiteGraph
|
|
): Seq[Long] = {
|
|
encodedTweetIds
|
|
.map { encodedTweetId => (encodedTweetId, bipartiteGraph.getRightNodeDegree(encodedTweetId)) }
|
|
.filter { case (_, degree) => degree > 0 } // keep only tweetds with positive degree
|
|
.sortBy { case (_, degree) => -degree } // sort by degree in descending order
|
|
.map { case (encodedTweetId, _) => encodedTweetId }
|
|
}
|
|
}
|