def getPicksForGroup(items, user, numRequested, resultSet): log.debug("Trying to pick %d results out %d items" % (numRequested, len(items))) # Score all possible items. itemsToScore = {} for i in items: # If the items has already been voted, give it a score of zero. if(user.hasVotedOnUrl(i)): # XXX: aren't we filtering this out else wh itemsToScore[i] = ScoredValue(0, "") continue #destScore = user.destinationScorer.getScore(i, itemCounters.getCounter("urlDomain")) titleScore = user.titleScorer.getScore(i, getCounter("title")) sourceScore = user.sourceScorer.getScore(i, getCounter("source")) itemsToScore[i] = ScoredValue(sourceScore.score * titleScore.score, "Source =\n%s\nTitle = %s\n" % (sourceScore, titleScore)) sortedItems = sorted(itemsToScore.iteritems(), key=lambda x: x[1].score, reverse=True) for i in sortedItems: (item, score) = i if(score.score <= 0): break resultSet.attemptAdd(item, score, "top") if(len(resultSet) >= numRequested): break
def getTopItemsByTitle(items, user, numRequested, resultSet): itemsToScore = {} for i in items: if(user.hasVotedOnUrl(i) or user.hasVotedOnSource(i)): # XXX: Maybe just drop it? itemsToScore[i] = ScoredValue(0, "") continue itemsToScore[i] = user.titleScorer.getScore(i, getCounter("title")) sortedItems = sorted(itemsToScore.iteritems(), key=lambda x: x[1].score, reverse=True) for i in sortedItems: if(len(resultSet) == numRequested): break (item, score) = i if(score.score <= 0): break resultSet.attemptAdd(item, score, "explorer")