Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Optimized SamplingCandidateItemsStrategy

By: a guest on Nov 30th, 2011  |  syntax: Java  |  size: 1.39 KB  |  views: 52  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  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.  
clone this paste RAW Paste Data