List of usage examples for org.apache.mahout.cf.taste.impl.model BooleanPreference BooleanPreference
public BooleanPreference(long userID, long itemID)
From source file:com.buddycloud.channeldirectory.search.handler.common.mahout.MemoryRecommenderDataModel.java
License:Apache License
private void createDataModel() throws IOException { CSVReader reader = new CSVReader(new FileReader(properties.getProperty("mahout.dumpfile"))); reader.readNext(); // Read header Map<Long, List<Preference>> preferences = new HashMap<Long, List<Preference>>(); Long userId = -1L;/*from www .jav a 2 s . c om*/ Long itemId = -1L; while (true) { String[] nextLine = reader.readNext(); if (nextLine == null) { break; } String item = nextLine[0]; String title = nextLine[1]; String user = nextLine[2]; if (!userToId.containsKey(user)) { userId++; userToId.put(user, userId); idToUser.put(userId, user); } if (!itemToId.containsKey(item)) { itemId++; ChannelData chData = new ChannelData(); chData.setId(item); chData.setTitle(title); itemToId.put(item, itemId); idToItem.put(itemId, chData); } Long currentUserId = userToId.get(user); BooleanPreference booleanPreference = new BooleanPreference(currentUserId, itemToId.get(item)); List<Preference> prefList = preferences.get(currentUserId); if (prefList == null) { prefList = new LinkedList<Preference>(); preferences.put(currentUserId, prefList); } prefList.add(booleanPreference); } FastByIDMap<PreferenceArray> userData = new FastByIDMap<PreferenceArray>(); for (Entry<Long, List<Preference>> entry : preferences.entrySet()) { userData.put(entry.getKey(), new BooleanUserPreferenceArray(entry.getValue())); } this.dataModel = new GenericDataModel(userData); }
From source file:org.zaizi.mahout.alfresco.datamodel.AlfrescoDataModelImpl.java
License:Open Source License
public PreferenceArray getPreferencesFromUser(long userID) throws TasteException { logger.trace("getPreferencesFromUser {" + userID + "}"); String username = ZaiziAlfrescoServiceUtil.getUsername(userID); SearchParameters searchParams = new SearchParameters(); searchParams.addStore(getStoreRef()); searchParams.setQuery(preferencesFromUserQuery); searchParams.setLanguage(SearchService.LANGUAGE_LUCENE); ResultSet results = null;// w w w . ja va 2 s. c om List<Preference> resultlist; try { NodeRef documentRef; Rating ratingRef; float rating; long itemId; results = executeQuery(searchParams); resultlist = new ArrayList<Preference>(results.length()); for (ResultSetRow row : results) { documentRef = row.getNodeRef(); // Document rated ratingRef = getRatingValue(documentRef, username); if (ratingRef != null) { itemId = ZaiziAlfrescoServiceUtil.getNodeId(documentRef); if (mahoutRatingScheme.equals(org.zaizi.mahout.config.RatingScheme.BOOLEAN_PREF)) { resultlist.add(new BooleanPreference(userID, itemId)); } else { rating = ratingRef.getScore();// (Integer) // ZaiziAlfrescoServiceUtil.getNodeService().getProperty(ratingRef, // RatingsModel.PROP_RATING); resultlist.add(new GenericPreference(userID, itemId, rating)); } } } } finally { if (results != null) { results.close(); } } if (logger.isTraceEnabled()) { logger.trace("Returning results { " + resultlist + "}"); } if (mahoutRatingScheme.equals(org.zaizi.mahout.config.RatingScheme.BOOLEAN_PREF)) return new BooleanUserPreferenceArray(resultlist); else return new GenericUserPreferenceArray(resultlist); }