Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- protected FastIDSet doGetCandidateItems(long[] preferredItemIDs, DataModel dataModel) throws TasteException {
- int maxPrefsPerItemConsidered = (int) Math.min(defaultMaxPrefsPerItemConsidered, userItemCountMultiplier * Math.log(Math.max(dataModel.getNumUsers(), dataModel.getNumItems())));
- FastIDSet possibleItemsIDs = new FastIDSet();
- for (long itemID : preferredItemIDs) {
- PreferenceArray prefs = dataModel.getPreferencesForItem(itemID);
- int prefsConsidered = Math.min(prefs.length(), maxPrefsPerItemConsidered);
- Iterator<Preference> sampledPrefs = new FixedSizeSamplingIterator<Preference>(prefsConsidered, prefs.iterator());
- while (sampledPrefs.hasNext()) {
- possibleItemsIDs.addAll(dataModel.getItemIDsFromUser(sampledPrefs.next().getUserID()));
- }
- }
- possibleItemsIDs.removeAll(preferredItemIDs);
- //
- if (this.maxSampledItems > 0) {
- FastIDSet finalPossibleItemsIDs = new FastIDSet();
- Iterator<Long> sampledPossibleIDs = new FixedSizeSamplingIterator<Long>(this.maxSampledItems, possibleItemsIDs.iterator());
- while (sampledPossibleIDs.hasNext()) {
- finalPossibleItemsIDs.add(sampledPossibleIDs.next().longValue());
- }
- logger.debug("finalPossibleItemsIDs size:" + finalPossibleItemsIDs.size());
- return finalPossibleItemsIDs;
- }
- logger.debug("possibleItemsIDs size:" + possibleItemsIDs.size());
- return possibleItemsIDs;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement