/
githubmirror
/
the-algorithm
Обзор
Документация
Войти
/
githubmirror
/
the-algorithm
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/java/com/twitter/search/earlybird/RecentTweetRestriction.java
60 строк
2 KB
twitter-team
Twitter Recommendation Algorithm
01 апр 2023, 01:36
01 апр 2023, 01:36
ef4c5eb
Код
Авторство
О чём код?
package com.twitter.search.earlybird; import scala.Option; import com.google.common.annotations.VisibleForTesting; import com.twitter.decider.Decider; public final class RecentTweetRestriction { private static final String RECENT_TWEETS_THRESHOLD = "recent_tweets_threshold"; private static final String QUERY_CACHE_UNTIL_TIME = "query_cache_until_time"; @VisibleForTesting public static final int DEFAULT_RECENT_TWEET_SECONDS = 15; private RecentTweetRestriction() { } /** * Returns the point in time (in seconds past the unix epoch) before which all tweets will be * completely indexed. This is required by some clients, because they rely on Earlybird monotonically * indexing tweets by ID and that tweets are completely indexed when they see them. * * @param lastTime The time at which the most recent tweet was indexed, in seconds since the unix * epoch. */ public static int recentTweetsUntilTime(Decider decider, int lastTime) { return untilTimeSeconds(decider, lastTime, RECENT_TWEETS_THRESHOLD); } /** * Returns the point in time (in seconds past the unix epoch) before which all tweets will be * completely indexed. This is required by some clients, because they rely on Earlybird monotonically * indexing tweets by ID and that tweets are completely indexed when they see them. * * @param lastTime The time at which the most recent tweet was indexed, in seconds since the unix * epoch. */ public static int queryCacheUntilTime(Decider decider, int lastTime) { return untilTimeSeconds(decider, lastTime, QUERY_CACHE_UNTIL_TIME); } private static int untilTimeSeconds(Decider decider, int lastTime, String deciderKey) { int recentTweetSeconds = getRecentTweetSeconds(decider, deciderKey); if (recentTweetSeconds == 0) { return 0; } return lastTime - recentTweetSeconds; } private static int getRecentTweetSeconds(Decider decider, String deciderKey) { Option<Object> deciderValue = decider.getAvailability(deciderKey); if (deciderValue.isDefined()) { return (int) deciderValue.get(); } return DEFAULT_RECENT_TWEET_SECONDS; } }