基于视图/注释计算页面重要性的算法
我需要一种算法,允许我根据页面的视图和注释计数为我网站的站点地图确定一个合适的
<priority>
字段。
对于那些不熟悉站点地图的人,优先级字段用于表示页面相对于同一网站上其他页面的重要性。它必须是介于0和1之间的十进制数。
该算法将接受两个参数,viewCount
和commentCount
,并将返回优先级值。例如:
GetPriority(100000, 100000); // Damn, a lot of views/comments! The returned value will be very close to 1, for example 0.995
GetPriority(3, 2); // Ok not many users are interested in this page, so for example it will return 0.082
没有找到相关结果
已邀请:
6 个回复
艾食魄轻县
,就像这样
然后你可以通过写作订购它们
我故意在观点和评论之间选择不平等的权重。与观点/评论保持相同权重可能产生的一个问题是排名变成了一个自我实现的预言 - 页面在列表的顶部返回,因此它被更频繁地访问,因此得到更多的点,所以它是在列表的停止处显示,并且它被更频繁地访问,并且它获得了更多的分数....更多地重视评论反映了这些需要付出实际努力并表现出真正的兴趣。 上面的公式将根据所有时间统计数据为您提供排名。因此,在去年收集的与去年积累的另一篇文章相同数量的观点/评论的文章将被赋予相同的优先权。重复公式可能是有意义的,每次指定一系列日期,并且有利于具有更高活动的页面,例如,
这将确保“热门”页面的优先级高于最近没有看到太多动作的类似评分页面。除了今天的分数之外的所有值都可以通过预定的存储过程保存在表中,以便数据库不必聚合许多注释/查看统计信息。只有今天的统计数据是“实时”计算的。更进一步,可以通过每天运行的存储过程来计算和存储历史数据的排名公式本身。 编辑:要获得从0.1到1.0的严格范围,您可以像这样动机化公式。但我强调 - 这只会增加开销并且是不必要的 - 优先级的绝对值并不重要 - 只有它们与其他网址的相对值。搜索引擎使用这些来回答问题,URL A比URL B更重要/相关吗?它通过比较它们的优先级 - 哪一个是最大的 - 而不是它们的绝对值来做到这一点。 // unnormalized - x是某个页面ID un(x)= 0.3 * log(views(x)+10)/ log(10 + maxViews())+ 0.7 *日志(注释(X)10)/日志(10个+ maxComments()) //原始公式(现在是伪代码) 最大值为1.0,最小值将从1.0开始,并随着更多视图/注释向下移动。 我们将un(0)定义为最小值,即(其中view(x)和comments(x)在上面的公式中均为0) 要获得从0.1到1.0的归一化公式,然后计算n(x),页面的归一化优先级
稼悸
W1 + W2 = 1 虽然恕我直言,只需使用
讹巳漓把备
显然,这可以推广到
其中A和B是相对权重。 但是,有时我们希望我们的权重是指数而不是线性的,比如
这将给出与早期公式非常不同的曲线。 同样的,
如果权重相等,将为具有20条评论和20条观看的页面提供更高的价值,而不是具有1条评论和40条观看的页面。 所以,总结一下: 你真的应该制作一个包含Views和Comments的样本值的电子表格,然后使用各种公式,直到得到一个你希望得到的分布。 我们不能为你做,因为我们不知道你想如何评估事物。
距相镭
怪酞撩匹
泪琉踞檄
页面的视图
,
页面的注释数量
,然后定义页面i的相对视图权重
其中
是所有页面上
的总和。同样,定义页面i的相对评论权重
现在你想要一些常数参数p:0&lt; p&lt; 1表示观点对评论的重要性:p = 0表示只有评论是重要的,p = 1表示只有观点是重要的,而p = 0.5给出相同的权重。 然后将优先级设置为
这可能过于简单了,但可能是最好的起点。