近期,在进行关联商品推荐功能模块的开发过程中,学到了一种“从小到大”的筛选思想。
例如,希望在商品详情页推送5个相关的商品,判断“关联度”的因素简化为三个:产品分类,服务分类,标准分类。这三个分类各占一定的分数。得分最高的5个相关商品将在推荐位进行展示。
在最开始的时候,我是打算用“从大到小”的方式进行,先根据其中一个因素(例如产品分类)查出部分商品,给予这些商品分数(例如10分)。
之后再从这些商品中查找满足第二个因素(服务分类)的商品,再加上一定分数(例如8分)。
最后,再从过滤的商品中找出满足第三个因素(标准分类)的商品,加上分数(例如5分)。
然后进行排序,选取得分最高的前5个商品。
但这样会出现一个问题,如果一开始的基数很大,那么系统开销就会上升,而且很多由于只去前五商品,会导致很多商品查不出来但不被需要,造成浪费。
后来向人请教后,换了一种“从小到大”的方式进行。先查同时满足三因素(产品、服务、分类)的商品,如果数量够了,则直接任意取5个。如果数量不足,则减少条件(例如保留产品和服务),此时查出来的总数,如果>=5,则取得分最高的5个,如果不够,则再次减少条件。
这样的好处就是,基数小,浪费少。