mirror of
https://github.com/arnaucube/goRecommender.git
synced 2026-02-06 19:16:39 +01:00
recommending
This commit is contained in:
15
mongodb.go
15
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
|
||||
}
|
||||
|
||||
@@ -6,18 +6,16 @@ import (
|
||||
"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
|
||||
}
|
||||
|
||||
@@ -65,9 +65,12 @@ func Recommendations(w http.ResponseWriter, r *http.Request) {
|
||||
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 @@ func SelectItem(w http.ResponseWriter, r *http.Request) {
|
||||
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
|
||||
|
||||
@@ -88,12 +97,6 @@ func SelectItem(w http.ResponseWriter, r *http.Request) {
|
||||
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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user