类豆瓣网站的设计思考


之前就很想做一个类豆瓣的网站,提供点映期间的分数(其实不止是点映,准确的说是豆瓣出分前),让我能在点映期间能对电影有一个大概的判断。裸辞后,这件事终于可以提上日程了。

单纯从技术上讲,做一个这样的网站并不难,我想它要比一个电商系统简单的多。 但就像很多人都说,豆瓣的价值从不在于技术。难的是产品设计。这段时间我也一直在思考相关的问题,在这里顺带着记录下。

注册:限制 or 不限制

用户质量最终影响了评分的质量,如果真的有粉圈的人大批量的注册,打出偏离大众的评分,就会导致最终评分失衡。

最直接的做法是,限制用户注册。

时间限制 or 邀请注册

通过时间限制新用户注册的频率,避免短时间内大批量的用户注册,这样可以有效提高用户质量。但同时也限制了推广。

通过邀请注册,可以建立起用户之间的链条,人以类聚物以群分,这样可以间接实现高质量的推广。但是,朋友的朋友也许是敌人,可能还是要增加邀请的时间限制。

不限制注册

除了限制注册,还可以采用间接的方法:通过评估用户评分的准确率,确定用户评分的权重。不确定豆瓣是否有用类似的方案。这种情况下,如果用户的评分失衡 ,那他对最终评分的权重也会越来越低。但这又会到的最初的问题,如果总是注册信号进行评分呢?是否要加入新用户的评分权重或者限制?

关于权重,也可以延伸出去。让我想到了最近在看的 Relative Moving Average (RMA)

评分

电影评分本身就是一个很主观的事,“甲之蜜糖 乙之砒霜”。但评分网站的存在就是一个客观的结果,它代表了一部分人的想法。

主观 or 客观 or 我全都要

虽然评分本身是主观的,它由用户的“上下文”决定。但这不意味着这种“主观”之中没有客观的成分。从电影的制作水平上来讲,就有很多客观的成分。比如说,假的 cg 大部分人看起来都假。

而主观评分可能还代表着用户的一份期冀,导演和编剧想表达的主题,可能是当下社会需要关注的没人关注的现象。

我想,这两种评分还是分开比较好,客观评分参与最终评分的计算,主观评分则代表用户的情绪需求。

评语

高质量的评语是非常宝贵的资源,可是这又带来很高的审核成本。所以早期就不打算加入评语了。

验票?验不了一点

对个人开发者来说,想做这一步基本不现实。即便是豆瓣也没有进行验票。

权重

上面提到了,评分中的权重机制是至关重要的。问了问 grok,没能提供给我一个特别合适的。早期就是用相对误差可能足够了。

如果预测分是 7.0 和 9.0,而最终开分是 8.0,两者的误差是同样的吗?7.0 可能更具有价值,毕竟买电影票是要花 rmb 的,大家都不容易。

排行?

是否可以做一个排行榜来激励用户进行评分?这是我最早的想法,我觉得这种博弈是很有趣的。

技术设计

前端

依旧还是用 flutter 吧,虽然 seo 目前是个大问题。但我不考虑就没问题。🤪

getx 整上去,反正怎么快怎么来。

后端

理论上不需要单独写后端,用现有的 pocketbase 就够了。如果需要额外的运算再想办法喽,无非是把 pocketbase 接入现有 go 后台。

数据库

只想用 pocketbase,不想再增加组件了。那么就是一个纯关系数据库。

用户表用已有的。评分是一张单独的表,包含用户、主管分、预测分,等等。电影条目要不要做一张单独的表呢?可能用 cloudflare 或者 eo 的 kv 就够了,再议。

实现过程中还要考虑下性能问题。还要花点时间研究下 pocketbase 的 relation 是什么,能否有点帮助。

总结和思考

我常常想,豆瓣为什么不早点出分,不出分我怎么决定要不要看?这是我做这个的初衷。

我倾向于认为豆瓣受到了一些外部压力,毕竟分数太低,没人愿意去看,票房多多少少会收到影响。那会不会有一天我也受到外部压力呢?可怕,希望一切只是圈地自萌。