[关闭]
@hobby 2015-04-09T12:37:53.000000Z 字数 1356 阅读 1512

分类系统的排序方法/算法

@(醋溜-广告系统)[分类|排序|算法|策略]

一. 需求

1、位置分为两部分,一部分位置用于随机测试,一部分位置用于按照宝贝质量排序,比例可调整,例如测试:质量=2:1, 2个测试1个质量2个测试1个质量这样,测试的数据不够了,剩下的全部按质量排序
2、测试部分:规则定为最近3天加入标签库的宝贝,随机测试,可调整时间范围
3、质量部分:按照一定的公式计算排序,可调整,例如 转化(成交单数/uv)+店铺评分 + 宝贝好评率
4、历史的数据如果想测试,删了重新加入

二. 考虑因素

  1. 宝贝质量排序需要考虑的因素: 转化率, 店铺评分(好评率), 产品评分(好评率). [第一次讨论结果]
  2. 对于第一条需求, 在我看来, 要想易于使用和扩展, 策略必须要清楚和简单.
    思索了一下, 我认为可选择的无非以下两种之一.
    A. 测试和质量数据分开, 抓取数据时按比例填充(仿照99的做法)
    B. 测试和质量数据都放在一起, 通过default_sort的计算方法宏观影响宝贝排序

其他
1. 排序算法中有各个影响因子, 各个因子的数值需要归一化处理
2. 每个因子有自己对应的权重, 进阶的可以考虑权重动态调整(再重做排序时, 根据运营策略)
3. 排序相关内容考虑哪些字段入库(以及如何组织表单), 平衡重复计算的代价 和 实现的复杂度.

设计考虑
1. 排序的类设计: 类关系 和 接口 (各个因子, 权重).
2. 排序逻辑与数据库其他表单的接口和访问方式(例如商品, uv, 成交量等内容)

三. 方案比较

表格 字段 含义 注释
cc_tag_relation_product product_id 标签表: 产品ID
cc_tag_relation_product tag_id 标签表: 标签id
cc_product product_id 产品表: 产品ID
cc_product shop_id 产品表: 店铺ID
cc_product version 产品表: 版本号 取最大?
cc_count_goods order_count 商品某日订单数
cc_count_goods uv 商品某日的访问量
cc_rate_star_shop desc 描述
cc_rate_star_shop serv 服务
cc_rate_star_shop ship 物流
cc_rate_star product_id 产品id
cc_rate_star star_num 商品分数 统计四星和五星的比例
  1. core->tag_relation_product: tag_id
  2. tag_relation_product-->core: product_id, id, weight (list/array)
  3. core->product: product_id
  4. product-->core: shop_id (with max version)
  5. core->count_goods: product_id, start_date, end_date
  6. count_goods-->core: sum(order_count)/sum(uv)
  7. core->rate_star_shop: shop_id
  8. rate_start_shop-->core: sum(5)/sum(*)
  9. core->rate_star: product_id
  10. rate_star-->core: sum(4,5)/sum(*)
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注