更新记录

111(2021-12-06)

刚写完


平台兼容性

阿里云 腾讯云 支付宝小程序云
×

云函数类插件通用教程

使用云函数类插件的前提是:使用HBuilderX 2.9+


文章帖子排序算法【x-sort】 很多应用经常都会根据用户的交互信息对内容进行排序,因为项目需要抄了一个简单的排序算法。 使用方法: const xSort = require('x-sort'); let score = xSort.calcScore({ create_time: 内容建立毫秒时间戳, update_time: 内容更新毫秒时间戳(可空), view_num: 内容浏览数(可空), comment_num: 内容评论数(可空), fav_num: 内容收藏数(可空), agree: 点赞数(可空), disagree: 反对数(可空) }); score为计算结果。

算法原理:

总得分指标/时间量^时间重力因子

分子包括文章相关的各种数据属性,这里对view_num浏览量做了一次去对数处理,主要是为了防止某些浏览量较大的文章异军突起,待在榜单迟迟不动。 comment_num评论数、fav_num收藏数直接加和到分子中,作为文章热门程度的考虑因素。 这里可以自由添加你需要的任何交互信息到分子中,当然也可以对这类信息做取对数操作。

分母是对时间因子的考虑,宏观上来看,就是文章热度和创建时间成反比。公式:(1 +create/2 + update/2)^i 可以通过对 i 变量的调控来改变时间因子对热度的影响。这里的create和update是创建时间、更新时间跟现在时间的小时数差值。 经过多次测试,最终分别将日、周、月的 i 值选取为 1.0、0.5、0.3。默认设置为1.0

例子: 建立数据n表ews,并建立score倒序索引。 本地执行云函数console就会在news表插入数据,然后浏览器运行就可以看到排好序的新闻列表了。 另外写了个把排序分数和_id拼接的方法,这样每个文章的score都是唯一的,可以在翻页的时候直接作为next_id来使用 score = xSort.sortId(socre,_id); 生产类似这样的0000006561adf26e3445870001a10827 分数值,前8位带前导零的分数值,后24是系统_id

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

许可协议

MIT协议

暂无用户评论。

使用中有什么不明白的地方,就向插件作者提问吧~ 我要提问