Skip to content

Commit fc4c527

Browse files
committed
added reverse Dependencies to PackageRank and tried to scale it for Hackage
1 parent 5d354da commit fc4c527

File tree

2 files changed

+17
-13
lines changed

2 files changed

+17
-13
lines changed

src/Distribution/Server/Features/PackageList.hs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -230,7 +230,7 @@ listFeature :: CoreFeature
230230
PackageName -> IO ())
231231

232232
listFeature CoreFeature{..}
233-
ReverseFeature{revDirectCount}
233+
ReverseFeature{revDirectCount, revPackageStats}
234234
DownloadFeature{..}
235235
VotesFeature{..}
236236
TagsFeature{..}
@@ -299,16 +299,16 @@ listFeature CoreFeature{..}
299299
desc = pkgDesc pkg
300300
pkg = last pkgs
301301
-- [reverse index disabled] revCount <- query . GetReverseCount $ pkgname
302-
intRevDirectCount <- revDirectCount pkgname
302+
revCount@(ReverseCount intRevDirectCount _) <- revPackageStats pkgname
303303
users <- queryGetUserDb
304304
tags <- queryTagsForPackage pkgname
305305
downs <- recentPackageDownloads
306306
votes <- pkgNumScore pkgname
307307
deprs <- queryGetDeprecatedFor pkgname
308308
maintainers <- queryUserGroup (maintainersGroup pkgname)
309309
prefsinfo <- queryGetPreferredInfo pkgname
310-
packageR <- rankPackage versions (cmFind pkgname downs)
311-
(UserIdSet.size maintainers) documentation tar env pkgs (safeLast pkgs)
310+
packageR <- rankPackage versions (cmFind pkgname downs) (UserIdSet.size maintainers)
311+
documentation tar env pkgs (safeLast pkgs) revCount
312312

313313
return $ (,) pkgname . updateReferenceVersion prefsinfo [pkgVersion (pkgInfoId pkg)] $ (updateDescriptionItem desc $ emptyPackageItem pkgname) {
314314
itemTags = tags

src/Distribution/Server/Features/PackageList/PackageRank.hs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import Distribution.PackageDescription
88
import Distribution.Server.Features.Documentation
99
( DocumentationFeature(..) )
1010
import Distribution.Server.Features.PackageList.MStats
11+
import Distribution.Server.Features.ReverseDependencies (ReverseCount(..))
1112
import Distribution.Server.Features.PreferredVersions
1213
import Distribution.Server.Features.PreferredVersions.State
1314
import Distribution.Server.Features.TarIndexCache
@@ -270,19 +271,21 @@ baseScore vers maintainers docs env tarCache versionList lastUploads pkgI = do
270271
documHas = queryHasDocumentation docs pkgId
271272

272273
temporalScore
273-
:: PackageDescription -> [CL.UTCTime] -> [Version] -> Int -> IO Scorer
274-
temporalScore p lastUploads versionList recentDownloads = do
274+
:: PackageDescription -> [CL.UTCTime] -> [Version] -> Int -> ReverseCount -> IO Scorer
275+
temporalScore p lastUploads versionList recentDownloads (ReverseCount dir tot) = do
275276
fresh <- freshnessScore
276277
tract <- tractionScore
277-
-- Reverse dependencies are added
278-
return $ tract <> fresh <> downloadScore
278+
return $ tract <> fresh <> downloadScore <> (if isApp then scorer 0 2 else dirScore <> indirScore)
279279
where
280280
isApp = (isNothing . library) p && (not . null . executables) p
281281
downloadScore = calcDownScore recentDownloads
282+
dirScore = fracScor 5 (logBase 2 (int2Float $ max 0 (dir - 32) + 32) - 5)
283+
indirScore = fracScor 2 (logBase 2 (int2Float $ max 0 (tot - dir - 32) + 32)
284+
- 5 / 3)
282285
calcDownScore i = fracScor
283286
5
284-
( (logBase 2 (int2Float $ max 0 (i - 32) + 32) - 5)
285-
/ (if isApp then 6 else 8)
287+
( logBase 2 (int2Float $ max 0 (i - 16) + 16)
288+
- (if isApp then 3 else 4)
286289
)
287290
packageFreshness = case safeHead lastUploads of
288291
Nothing -> return 0
@@ -302,11 +305,12 @@ rankPackage
302305
-> ServerEnv
303306
-> [PkgInfo]
304307
-> Maybe PkgInfo
308+
-> ReverseCount
305309
-> IO Float
306-
rankPackage _ _ _ _ _ _ _ Nothing = return 0
307-
rankPackage versions recentDownloads maintainers docs tarCache env pkgs (Just pkgUsed)
310+
rankPackage _ _ _ _ _ _ _ Nothing _ = return 0
311+
rankPackage versions recentDownloads maintainers docs tarCache env pkgs (Just pkgUsed) revCount
308312
= do
309-
t <- temporalScore pkgD uploads versionList recentDownloads
313+
t <- temporalScore pkgD uploads versionList recentDownloads revCount
310314

311315
b <- baseScore versions
312316
maintainers

0 commit comments

Comments
 (0)