arnaucube
arnaucube/goRecommenderPublic Self-hosted repository
recommending
arnaucode idoctnef@openmailbox.org
Fri, 07 Jul 2017 20:45:25 +0200
commit

fe78d1acaa48290b2dcf9db6eac3fec5576063fe

parent

7cce4a11f4aea13cfc61287d8c22506a94b71ed6

4 files changed, 27 insertions(+), 24 deletions(-)

jump to
M mongodb.go → mongodb.go

@@ -141,11 +141,12 @@ func getAllItems() ([]ItemModel, error) {

result := []ItemModel{} iter := itemCollection.Find(nil).Limit(100).Iter() err := iter.All(&result) - if err != nil { - //user not exist - return result, err - } else { - //user exist - return result, err - } + return result, err +} + +func getItemsNotActed(actedItems []string) ([]ItemModel, error) { + result := []ItemModel{} + iter := itemCollection.Find(bson.M{"id": bson.M{"$nin": actedItems}}).Limit(100).Iter() + err := iter.All(&result) + return result, err }
M recommendations.go → recommendations.go

@@ -6,18 +6,16 @@

"github.com/fatih/color" ) -func getRecommendations(userid string, nrec int) { - - fmt.Println(userid) - fmt.Println(nrec) - +func getRecommendations(userid string, nrec int) []ItemModel { user, err := getUserById(userid) check(err) - color.Blue("user: ") - fmt.Println(user) - items, err := getAllItems() + items, err := getItemsNotActed(user.Actions) check(err) - color.Blue("all items: ") + + //select nrec items from the items array + + color.Blue("recommended items: ") fmt.Println(items) + return items }
M serverRoutes.go → serverRoutes.go

@@ -65,9 +65,12 @@ nrec, err := strconv.Atoi(vars["nrec"])

check(err) //now, get recommendations - getRecommendations(userid, nrec) + items := getRecommendations(userid, nrec) + //convert []items struct to json + jItems, err := json.Marshal(items) + check(err) - fmt.Fprintln(w, "recommendations") + fmt.Fprintln(w, string(jItems)) } func SelectItem(w http.ResponseWriter, r *http.Request) { ipFilter(w, r)

@@ -80,6 +83,12 @@ if err != nil {

fmt.Fprintln(w, "item "+itemid+" not found") } + //find user + user, err := getUserById(userid) + if err != nil { + fmt.Fprintln(w, "user "+userid+" not found") + } + //increase TActed in item item.TActed = item.TActed + 1

@@ -87,12 +96,6 @@ //save item

item, err = updateItem(item) check(err) fmt.Println(item) - - //find user - user, err := getUserById(userid) - if err != nil { - fmt.Fprintln(w, "user "+userid+" not found") - } //add item to []Actions of user user.Actions = append(user.Actions, itemid)
M tests.sh → tests.sh

@@ -19,6 +19,7 @@

echo http http://127.0.0.1:3056/selectItem/user1/item1 http http://127.0.0.1:3056/selectItem/user1/item1 +echo "------------------" echo "[Getting recommendations for user]" echo http http://127.0.0.1:3056/user1/3