wangchuanjin 1 سال پیش
والد
کامیت
e0265171f0
3فایلهای تغییر یافته به همراه48 افزوده شده و 29 حذف شده
  1. 11 3
      subrecommend/job/matchjob.go
  2. 0 17
      subrecommend/matcher/matcher.go
  3. 37 9
      subrecommend/util/util.go

+ 11 - 3
subrecommend/job/matchjob.go

@@ -5,6 +5,7 @@ import (
 	. "subrecommend/db"
 	. "subrecommend/matcher"
 	. "subrecommend/util"
+	"time"
 
 	util "app.yhyue.com/moapp/jybase/common"
 	"app.yhyue.com/moapp/jybase/logger"
@@ -13,6 +14,9 @@ import (
 	. "bp.jydev.jianyu360.cn/BaseService/pushpkg/p"
 )
 
+var behaviorCacheData map[string]*Behavior
+var behaviorCacheDay int
+
 type MatchJob struct {
 }
 
@@ -38,9 +42,13 @@ func (m *MatchJob) Execute() {
 		*datas = append(*datas, v)
 	}
 	logger.Info("加载bidding数据", len(*datasTemp), "条", "没有autoid的", len(*datasTemp)-len(*datas), "条")
-	allBehavior := LoadAllBehavior()
-	(&PersonMatch{Datas: datas, AllBehavior: allBehavior}).Start()
-	(&EntMatch{Datas: datas, AllBehavior: allBehavior}).Start()
+	nowDay := time.Now().Day()
+	if behaviorCacheData == nil || behaviorCacheDay != nowDay {
+		behaviorCacheDay = nowDay
+		behaviorCacheData = LoadAllBehavior()
+	}
+	(&PersonMatch{Datas: datas, AllBehavior: behaviorCacheData}).Start()
+	(&EntMatch{Datas: datas, AllBehavior: behaviorCacheData}).Start()
 	TaskConfig.Pici = endTime
 	logger.Info("推荐数据任务结束。。。", TaskConfig.Pici)
 }

+ 0 - 17
subrecommend/matcher/matcher.go

@@ -8,7 +8,6 @@ import (
 	. "subrecommend/db"
 	. "subrecommend/util"
 	"sync"
-	"time"
 
 	. "app.yhyue.com/moapp/jybase/common"
 	. "app.yhyue.com/moapp/jybase/date"
@@ -58,14 +57,6 @@ func (m *MatchOther) MatchSearchfor() {
 		}
 		keys := []string{}
 		for _, vv := range m.AllBehavior[ui.Id].Searchfors {
-			datetime, err := time.ParseInLocation(Date_Full_Layout, vv.Datetime, time.Local)
-			if err != nil {
-				logger.Info(ui.Id, err)
-				continue
-			}
-			if datetime.Before(time.Now().AddDate(0, 0, -Config.SearchLimitDay)) {
-				continue
-			}
 			keys = append(keys, vv.Keys...)
 		}
 		if cnss := m.CreateNewUserInfo(ui, keys); cnss != nil {
@@ -88,14 +79,6 @@ func (m *MatchOther) MatchBrowse() {
 		}
 		keys := []string{}
 		for _, vv := range m.AllBehavior[ui.Id].Browses {
-			datetime, err := time.ParseInLocation(Date_Full_Layout, vv.Datetime, time.Local)
-			if err != nil {
-				logger.Info(ui.Id, err)
-				continue
-			}
-			if datetime.Before(time.Now().AddDate(0, 0, -Config.BrowseLimitDay)) {
-				continue
-			}
 			keys = append(keys, vv.Classify)
 		}
 		if cnss := m.CreateNewUserInfo(ui, keys); cnss != nil {

+ 37 - 9
subrecommend/util/util.go

@@ -9,8 +9,10 @@ import (
 	"strings"
 	. "subrecommend/config"
 	. "subrecommend/db"
+	"time"
 
 	. "app.yhyue.com/moapp/jybase/common"
+	. "app.yhyue.com/moapp/jybase/date"
 	"app.yhyue.com/moapp/jybase/logger"
 	"app.yhyue.com/moapp/jybase/redis"
 )
@@ -59,27 +61,53 @@ func LoadAllBehavior() map[string]*Behavior {
 		}
 		searchfor, _ := (*l)[0]["searchfor"].(string)
 		browse, _ := (*l)[0]["browse"].(string)
-		if searchfor == "" && browse == "" {
-			return true
-		}
-		var searchfors []*Searchfor
+		userId, _ := (*l)[0]["userid"].(string)
+		searchfors := []*Searchfor{}
 		if searchfor != "" {
-			if err := json.Unmarshal([]byte(searchfor), &searchfors); err != nil {
+			searchforsTemp := []*Searchfor{}
+			if err := json.Unmarshal([]byte(searchfor), &searchforsTemp); err != nil {
 				logger.Error(searchfor, err)
+			} else {
+				for _, v := range searchforsTemp {
+					datetime, err := time.ParseInLocation(Date_Full_Layout, v.Datetime, time.Local)
+					if err != nil {
+						logger.Info(userId, err)
+						continue
+					}
+					if datetime.Before(time.Now().AddDate(0, 0, -Config.SearchLimitDay)) {
+						continue
+					}
+					searchfors = append(searchfors, v)
+				}
 			}
 		}
-		var browses []*Browse
+		browses := []*Browse{}
 		if browse != "" {
-			if err := json.Unmarshal([]byte(browse), &browses); err != nil {
+			browsesTemp := []*Browse{}
+			if err := json.Unmarshal([]byte(browse), &browsesTemp); err != nil {
 				logger.Error(browse, err)
+			} else {
+				for _, v := range browsesTemp {
+					datetime, err := time.ParseInLocation(Date_Full_Layout, v.Datetime, time.Local)
+					if err != nil {
+						logger.Info(userId, err)
+						continue
+					}
+					if datetime.Before(time.Now().AddDate(0, 0, -Config.BrowseLimitDay)) {
+						continue
+					}
+					browses = append(browses, v)
+				}
 			}
 		}
+		if len(searchfors) == 0 && len(browses) == 0 {
+			return true
+		}
 		area := ""
 		if browses != nil && len(browses) > 0 {
 			area = browses[0].Area
 		}
-		userid, _ := (*l)[0]["userid"].(string)
-		allBehavior[userid] = &Behavior{
+		allBehavior[userId] = &Behavior{
 			Searchfors: searchfors,
 			Browses:    browses,
 			Area:       area,