Advertisement
Guest User

Optimized SamplingCandidateItemsStrategy

a guest
Nov 30th, 2011
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.39 KB | None | 0 0
  1. protected FastIDSet doGetCandidateItems(long[] preferredItemIDs, DataModel dataModel) throws TasteException {
  2.         int maxPrefsPerItemConsidered = (int) Math.min(defaultMaxPrefsPerItemConsidered, userItemCountMultiplier * Math.log(Math.max(dataModel.getNumUsers(), dataModel.getNumItems())));
  3.         FastIDSet possibleItemsIDs = new FastIDSet();
  4.  
  5.         for (long itemID : preferredItemIDs) {
  6.            
  7.             PreferenceArray prefs = dataModel.getPreferencesForItem(itemID);
  8.             int prefsConsidered = Math.min(prefs.length(), maxPrefsPerItemConsidered);
  9.             Iterator<Preference> sampledPrefs = new FixedSizeSamplingIterator<Preference>(prefsConsidered, prefs.iterator());
  10.             while (sampledPrefs.hasNext()) {
  11.                 possibleItemsIDs.addAll(dataModel.getItemIDsFromUser(sampledPrefs.next().getUserID()));
  12.             }
  13.         }
  14.         possibleItemsIDs.removeAll(preferredItemIDs);
  15.        
  16.         //
  17.         if (this.maxSampledItems > 0) {
  18.             FastIDSet finalPossibleItemsIDs = new FastIDSet();
  19.             Iterator<Long> sampledPossibleIDs = new FixedSizeSamplingIterator<Long>(this.maxSampledItems, possibleItemsIDs.iterator());
  20.             while (sampledPossibleIDs.hasNext()) {
  21.                 finalPossibleItemsIDs.add(sampledPossibleIDs.next().longValue());
  22.             }
  23.            
  24.             logger.debug("finalPossibleItemsIDs size:" + finalPossibleItemsIDs.size());
  25.            
  26.             return finalPossibleItemsIDs;
  27.         }
  28.        
  29.         logger.debug("possibleItemsIDs size:" + possibleItemsIDs.size());
  30.         return possibleItemsIDs;
  31.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement