Example usage for org.apache.mahout.cf.taste.impl.common FastByIDMap remove

List of usage examples for org.apache.mahout.cf.taste.impl.common FastByIDMap remove

Introduction

In this page you can find the example usage for org.apache.mahout.cf.taste.impl.common FastByIDMap remove.

Prototype

public V remove(long key) 

Source Link

Usage

From source file:alto.plugin.webradio.recommender.MongoDBDataModel.java

License:Apache License

private DataModel removeUserItem(long userID, Iterable<List<String>> items) {
    FastByIDMap<PreferenceArray> rawData = ((GenericDataModel) delegate).getRawUserData();
    for (List<String> item : items) {
        PreferenceArray prefs = rawData.get(userID);
        long itemID = Long.parseLong(item.get(0));
        if (prefs != null) {
            boolean exists = false;
            int length = prefs.length();
            for (int i = 0; i < length; i++) {
                if (prefs.getItemID(i) == itemID) {
                    exists = true;//w w  w  .  j ava2 s  .c o  m
                    break;
                }
            }
            if (exists) {
                rawData.remove(userID);
                if (length > 1) {
                    PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1);
                    for (int i = 0, j = 0; i < length; i++, j++) {
                        if (prefs.getItemID(i) == itemID) {
                            j--;
                        } else {
                            newPrefs.set(j, prefs.get(i));
                        }
                    }
                    rawData.put(userID, newPrefs);
                }
                log.info("Removing userID: {} itemID: {}", userID, itemID);
                if (mongoManage) {
                    removeMongoUserItem(Long.toString(userID), Long.toString(itemID));
                }
            }
        }
    }
    return new GenericDataModel(rawData);
}

From source file:com.anjuke.romar.mahout.util.Util.java

License:Apache License

public static void applyRemove(FastByIDMap<PreferenceArray> data, Preference removePreference) {
    long userID = removePreference.getUserID();
    long itemID = removePreference.getItemID();
    PreferenceArray prefs = data.get(userID);
    if (prefs != null) {
        boolean exists = false;
        int length = prefs.length();
        for (int i = 0; i < length; i++) {
            if (prefs.getItemID(i) == itemID) {
                exists = true;/*from   w  w w .  ja  v a2 s. co m*/
                break;
            }
        }
        if (exists) {
            if (length == 1) {
                data.remove(userID);
            } else {
                PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1);
                for (int i = 0, j = 0; i < length; i++, j++) {
                    if (prefs.getItemID(i) == itemID) {
                        j--;
                    } else {
                        newPrefs.set(j, prefs.get(i));
                    }
                }
                data.put(userID, newPrefs);
            }
        }
    }

}

From source file:edu.uniandes.yelp.recommender.MongoDBDataModel.java

private DataModel removeUserItem(long userID, Iterable<List<String>> items) {
    FastByIDMap<PreferenceArray> rawData = ((GenericDataModel) delegate).getRawUserData();
    for (List<String> item : items) {
        PreferenceArray prefs = rawData.get(userID);
        long itemID = Long.parseLong(item.get(0));
        if (prefs != null) {
            boolean exists = false;
            int length = prefs.length();
            for (int i = 0; i < length; i++) {
                if (prefs.getItemID(i) == itemID) {
                    exists = true;/*from  w  w  w  . java  2  s . c  o  m*/
                    break;
                }
            }
            if (exists) {
                rawData.remove(userID);
                if (length > 1) {
                    PreferenceArray newPrefs = new GenericUserPreferenceArray(length - 1);
                    for (int i = 0, j = 0; i < length; i++, j++) {
                        if (prefs.getItemID(i) == itemID) {
                            j--;
                        } else {
                            newPrefs.set(j, prefs.get(i));
                        }
                    }
                    rawData.put(userID, newPrefs);
                }
                //log.info("Removing userID: {} itemID: {}", userID, itemID);
                if (mongoManage) {
                    removeMongoUserItem(Long.toString(userID), Long.toString(itemID));
                }
            }
        }
    }
    return new GenericDataModel(rawData);
}

From source file:net.ufida.info.mahout.common.MemoryDiffStorage.java

License:Apache License

@Override
public void removeItemPref(long userID, long itemIDA, float prefValue) throws TasteException {
    PreferenceArray userPreferences = dataModel.getPreferencesFromUser(userID);
    try {/* w w  w.  j a  v  a 2  s .c o m*/
        buildAverageDiffsLock.writeLock().lock();

        FastByIDMap<RunningAverage> aMap = averageDiffs.get(itemIDA);

        int length = userPreferences.length();
        for (int i = 0; i < length; i++) {

            long itemIDB = userPreferences.getItemID(i);
            float bValue = userPreferences.getValue(i);

            if (itemIDA < itemIDB) {

                if (aMap != null) {
                    RunningAverage average = aMap.get(itemIDB);
                    if (average != null) {
                        if (average.getCount() <= 1) {
                            aMap.remove(itemIDB);
                        } else {
                            average.removeDatum(bValue - prefValue);
                        }
                    }
                }

            } else if (itemIDA > itemIDB) {

                FastByIDMap<RunningAverage> bMap = averageDiffs.get(itemIDB);
                if (bMap != null) {
                    RunningAverage average = bMap.get(itemIDA);
                    if (average != null) {
                        if (average.getCount() <= 1) {
                            aMap.remove(itemIDA);
                        } else {
                            average.removeDatum(prefValue - bValue);
                        }
                    }
                }

            }
        }

    } finally {
        buildAverageDiffsLock.writeLock().unlock();
    }
}