您好,登錄后才能下訂單哦!
predictionio 的validScores方法 有點(diǎn)問題,因?yàn)閙odel對象中的一個屬性類型為Map<String, Item> items,在數(shù)據(jù)量很大的時(shí)候,肯定是不行,所以優(yōu)化一下,采用join+filter的模式,代碼如下
return all.mapToPair(new PairFunction<ItemScore, String, ItemScore>() {
@Override
public Tuple2<String, ItemScore> call(ItemScore idUser) throws Exception {
return new Tuple2<>(idUser.getItemEntityId(), idUser);
}
}).join(model.getItems()).filter(new Function<Tuple2<String,Tuple2<ItemScore,Item>>, Boolean>() {
@Override
public Boolean call(Tuple2<String,Tuple2<ItemScore,Item>> itemScore) throws Exception {
/*Item item = items.get(itemScore.getItemEntityId());*/
Item item =itemScore._2._2;
//logger.info("join end");
return (item!=null && /*item != null
&& */passWhitelistCriteria(whitelist, itemScore._2._1.getItemEntityId())
&& passBlacklistCriteria(blacklist, itemScore._2._1.getItemEntityId())
/* && passCategoryCriteria(categories, item)*/
/* && passUnseenCriteria(seenItemEntityIds, itemScore.getItemEntityId())*///看過或買過的不要
/* && passAvailabilityCriteria(unavailableItemEntityIds, itemScore.getItemEntityId())*/);
}
}).map(new Function<Tuple2<String, Tuple2<ItemScore,Item>>, ItemScore>() {
@Override
public ItemScore call(Tuple2<String, Tuple2<ItemScore,Item>> userItemCount) throws Exception {
return userItemCount._2._1;
}
});
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。