@@ -92,22 +92,53 @@ func makeSequenceFeatures(offlineSequences, onlineSequences []*sequenceInfo, seq
9292
9393 //produce seqeunce feature correspond to easyrec processor
9494 sequencesValueMap := make (map [string ][]string )
95- sequenceMap := make (map [string ]bool )
95+ sequenceMap := make (map [string ]struct {} )
9696
9797 for _ , seq := range onlineSequences {
98- key := fmt .Sprintf ("%s#%s" , seq .itemId , seq .event )
98+ var key string
99+ switch sequenceConfig .DeduplicationMethodNum {
100+ case 1 :
101+ key = fmt .Sprintf ("%s#%s" , seq .itemId , seq .event )
102+ case 2 :
103+ key = fmt .Sprintf ("%s#%s#%d" , seq .itemId , seq .event , seq .timestamp )
104+ }
99105 if _ , exist := sequenceMap [key ]; ! exist {
100- sequenceMap [key ] = true
106+ sequenceMap [key ] = struct {}{}
101107 sequencesValueMap [sequenceConfig .ItemIdField ] = append (sequencesValueMap [sequenceConfig .ItemIdField ], seq .itemId )
102108 sequencesValueMap [sequenceConfig .TimestampField ] = append (sequencesValueMap [sequenceConfig .TimestampField ], fmt .Sprintf ("%d" , seq .timestamp ))
103109 sequencesValueMap [sequenceConfig .EventField ] = append (sequencesValueMap [sequenceConfig .EventField ], seq .event )
104110 if sequenceConfig .PlayTimeField != "" {
105111 sequencesValueMap [sequenceConfig .PlayTimeField ] = append (sequencesValueMap [sequenceConfig .PlayTimeField ], fmt .Sprintf ("%.2f" , seq .playTime ))
106112 }
107113 sequencesValueMap ["ts" ] = append (sequencesValueMap ["ts" ], fmt .Sprintf ("%d" , currTime - seq .timestamp ))
108- for k , v := range seq .onlineBehaviourTableFieldsMap {
109- sequencesValueMap [k ] = append (sequencesValueMap [k ], v )
110- }
114+ }
115+ }
116+
117+ properties := make (map [string ]interface {})
118+ for key , value := range sequencesValueMap {
119+ curSequenceSubName := (seqConfig .OnlineSeqName + "__" + key )
120+ properties [curSequenceSubName ] = strings .Join (value , ";" )
121+ }
122+ properties [seqConfig .OnlineSeqName ] = strings .Join (sequencesValueMap [sequenceConfig .ItemIdField ], ";" )
123+
124+ return properties
125+
126+ }
127+
128+ func makeSequenceFeatures4FeatureDB (sequencesInfos []* sequenceInfo , seqConfig * api.SeqConfig , sequenceConfig api.FeatureViewSeqConfig , currTime int64 ) map [string ]interface {} {
129+ //produce seqeunce feature correspond to easyrec processor
130+ sequencesValueMap := make (map [string ][]string )
131+
132+ for _ , seq := range sequencesInfos {
133+ sequencesValueMap [sequenceConfig .ItemIdField ] = append (sequencesValueMap [sequenceConfig .ItemIdField ], seq .itemId )
134+ sequencesValueMap [sequenceConfig .TimestampField ] = append (sequencesValueMap [sequenceConfig .TimestampField ], fmt .Sprintf ("%d" , seq .timestamp ))
135+ sequencesValueMap [sequenceConfig .EventField ] = append (sequencesValueMap [sequenceConfig .EventField ], seq .event )
136+ if sequenceConfig .PlayTimeField != "" {
137+ sequencesValueMap [sequenceConfig .PlayTimeField ] = append (sequencesValueMap [sequenceConfig .PlayTimeField ], fmt .Sprintf ("%.2f" , seq .playTime ))
138+ }
139+ sequencesValueMap ["ts" ] = append (sequencesValueMap ["ts" ], fmt .Sprintf ("%d" , currTime - seq .timestamp ))
140+ for k , v := range seq .onlineBehaviourTableFieldsMap {
141+ sequencesValueMap [k ] = append (sequencesValueMap [k ], v )
111142 }
112143 }
113144
0 commit comments