Skip to content

Commit 746a70c

Browse files
committed
Added key.js
1 parent 5d6c034 commit 746a70c

3 files changed

Lines changed: 40 additions & 8 deletions

File tree

lib/algorithms.js

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11

22
const async = require('async'),
33
config = require('./config.js'),
4-
_ = require('underscore');
4+
_ = require('underscore'),
5+
Key = require('./key');
56

67
const CLASSNAME = config.className;
78

@@ -50,7 +51,7 @@ exports.updateSimilarityFor = function(userId, cb){
5051
// initializing variables
5152
let userRatedItemIds, itemLiked, itemDisliked, itemLikeDislikeKeys;
5253
// setting the redis key for the user's similarity set
53-
const similaritySet = [CLASSNAME,userId,'similaritySet'].join(":");
54+
const similaritySet = Key.similaritySet(userId);
5455
// creating a combined set with the all of a users likes and dislikes
5556
client.sunion([CLASSNAME,'user',userId,'liked'].join(":"),[CLASSNAME,'user',userId,'disliked'].join(":"), function(err, userRatedItemIds){
5657
// if they have rated anything
@@ -105,7 +106,7 @@ exports.predictFor = function(userId, itemId){
105106
itemId = String(itemId);
106107
let finalSimilaritySum = 0.0;
107108
let prediction = 0.0;
108-
const similaritySet = [CLASSNAME, userId, 'similaritySet'].join(':');
109+
const similaritySet = Key.similaritySet(userId);
109110
const likedBySet = [CLASSNAME, 'item', itemId, 'liked'].join(':');
110111
const dislikedBySet = [CLASSNAME, 'item', itemId, 'disliked'].join(':');
111112

@@ -160,8 +161,8 @@ exports.updateRecommendationsFor = function(userId, cb){
160161
// initializing the redis keys for temp sets, the similarity set and the recommended set
161162
const tempSet = [CLASSNAME, userId, 'tempSet'].join(":");
162163
const tempDiffSet = [CLASSNAME, userId, 'tempDiffSet'].join(":");
163-
const similaritySet = [CLASSNAME, userId, 'similaritySet'].join(":");
164-
const recommendedSet = [CLASSNAME, userId, 'recommendedSet'].join(":");
164+
const similaritySet = Key.similaritySet(userId);
165+
const recommendedSet = Key.recommendedSet(userId);
165166
// returns an array of the users that are most similar within k nearest neighbors
166167
client.zrevrange(similaritySet, 0, config.nearestNeighbors-1, function(err, mostSimilarUserIds){
167168
// returns an array of the users that are least simimilar within k nearest neighbors

lib/key.js

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
const config = require('./config.js');
3+
4+
const CLASSNAME = config.className;
5+
const USER = 'user';
6+
7+
class Key {
8+
constructor() {
9+
this.key = '';
10+
this.keyArr = [];
11+
}
12+
13+
joinKey() {
14+
this.key = this.keyArr.join(':');
15+
}
16+
17+
similaritySet(userId) {
18+
this.keyArr = [CLASSNAME, USER, userId, 'similaritySet'];
19+
this.joinKey();
20+
return this.key;
21+
}
22+
23+
recommendedSet(userId) {
24+
this.keyArr = [CLASSNAME, USER, userId, 'recommendedSet'];
25+
this.joinKey();
26+
return this.key;
27+
}
28+
}
29+
30+
module.exports = exports = new Key();

lib/stat.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,14 @@
11

22
const config = require('./config.js'),
3-
client = require('./client.js');
3+
client = require('./client.js'),
4+
Key = require('./key');
45

56
const CLASSNAME = config.className;
67

78
const stat = {
89
recommendFor: function(userId, numberOfRecs){
910
return new Promise((resolve, reject) => {
10-
client.zrevrangeAsync([CLASSNAME, userId, 'recommendedSet'].join(":"), 0, numberOfRecs).then((results) => {
11+
client.zrevrangeAsync(Key.recommendedSet(userId), 0, numberOfRecs).then((results) => {
1112
resolve(results);
1213
});
1314
});
@@ -51,7 +52,7 @@ const stat = {
5152
},
5253
mostSimilarUsers: function(userId){
5354
return new Promise((resolve, reject) => {
54-
client.zrevrangeAsync([CLASSNAME, userId, 'similaritySet'].join(":"), 0, -1).then((results) => {
55+
client.zrevrangeAsync(Key.similaritySet(userId), 0, -1).then((results) => {
5556
resolve(results);
5657
});
5758
});

0 commit comments

Comments
 (0)