使用 Javascript 的电子商务网站的简单流行/趋势产品算法

Kin*_*ics 4 javascript algorithm rank mongodb node.js

我目前正在构建一个小型电子商务网站,对于主页,我想根据受欢迎程度对产品进行排名。产品架构具有以下数据:

{
  ...
  noViews: Number,  // Number of times a user has clicked on the product
  avgRating: Number, // Average star rating (1 - 5)
  datePosted: Date // Date the product was posted
}
Run Code Online (Sandbox Code Playgroud)

我可以使用什么(相对)简单的算法/代码来实现这一点(使用 Node.js),其中产品将根据受欢迎程度进行排名(考虑到时间,因此内容不会过时)。

谢谢。

Mar*_*hya 5

首先,您需要一个基于时间的指标来解决这个问题。

总体趋势产品没有多大意义,特别是对于电子商务应用程序而言。

比方说,您想要找到特定日期(例如今天)的热门产品。

现在这不是一个容易解决的问题。解决这个问题的直接方法并不只有一种。对于每家公司来说,都有一种方法有效!

理想情况下,这里的一个简单解决方案是根据因素组合创建一个分值。例如购买次数、浏览次数、点击次数等。

在这里,您有datePosted参数。现在,为此创建一个 date_score 。因此,这里的基本思想是昨天发布的产品比一周前发布的产品得分更高。您输入的值需要根据算法的定制进行调整和检查。

avgRating同样,对和实施类似的分数noViews

准备好这些分数后,为这些分数创建权重。现在,100 分中的加权平均值就是最终分数。

所以,最后一个示例解决方案:

  • 发布日期:

    • 如果日期是最近 3 天(得分 = 100)
    • 如果日期是上周(分数 = 75)
    • 如果日期在上周(分数 = 50)
    • 否则默认分数 = 25。
  • 星级:

    • (评级/5)*100
  • 观看次数:

    • 在这里,您可以使用百分位数。
    • 假设所有产品的最大浏览次数是 x。
    • 那么,观看分数为(views/x) *100

现在,处理两个分数匹配时会发生什么情况的极端情况。

之后,您可以简单地通过分数参数进行排序。

另外,请确保您所做的一切都是动态的,因为静态阈值通常不会提供很好的结果!