public IList <RecommendedItem> RecommendedBecause(Object userID, Object itemID, int howMany)
        {
            if (userID == null)
            {
                throw new ArgumentNullException("userID is null");
            }
            if (itemID == null)
            {
                throw new ArgumentNullException("itemID is null");
            }
            if (howMany < 1)
            {
                throw new ArgumentException("howMany must be at least 1");
            }

            DataModel model           = this.DataModel;
            User      user            = model.GetUser(userID);
            Item      recommendedItem = model.GetItem(itemID);

            TopItems.Estimator <Item> estimator = new RecommendedBecauseEstimator(user, recommendedItem, correlation);

            ICollection <Item> allUserItems = new HashedSet <Item>();

            Preference[] prefs = user.GetPreferencesAsArray();
            foreach (Preference pref in prefs)
            {
                allUserItems.Add(pref.Item);
            }
            allUserItems.Remove(recommendedItem);

            return(TopItems.GetTopItems(howMany, allUserItems, NullRescorer <Item> .Instance, estimator));
        }
예제 #2
0
        public List <RecommendedItem> recommendedBecause(long userID, long itemID, int howMany)
        {
            DataModel model = this.getDataModel();

            TopItems.Estimator <long> estimator = new RecommendedBecauseEstimator(this, userID, itemID);
            PreferenceArray           array     = model.getPreferencesFromUser(userID);
            int       size = array.length();
            FastIDSet set  = new FastIDSet(size);

            for (int i = 0; i < size; i++)
            {
                set.add(array.getItemID(i));
            }
            set.remove(itemID);
            return(TopItems.getTopItems(howMany, set.GetEnumerator(), null, estimator));
        }
예제 #3
0
        public List <IRecommendedItem> RecommendedBecause(long userID, long itemID, int howMany)
        {
            //Preconditions.checkArgument(howMany >= 1, "howMany must be at least 1");

            IDataModel model = GetDataModel();

            TopItems.IEstimator <long> estimator = new RecommendedBecauseEstimator(this, userID, itemID);

            IPreferenceArray prefs = model.GetPreferencesFromUser(userID);
            int       size         = prefs.Length();
            FastIDSet allUserItems = new FastIDSet(size);

            for (int i = 0; i < size; i++)
            {
                allUserItems.Add(prefs.GetItemID(i));
            }
            allUserItems.Remove(itemID);

            return(TopItems.GetTopItems(howMany, allUserItems.GetEnumerator(), null, estimator));
        }