算法:按照标签相似度获取指定数量的其他值?
加入有一个游戏包含很多标签,这个时候有一个游戏推荐的栏目,其规则如下:
- 首先寻找标签完全一致的游戏,有4个就提取4个
- 不够4个就寻找标签有一个不同的游戏,
- 依次类推直到全不相同的游戏
好像有什么二进制运算啥的,但是搞不清楚。跪求大佬指引?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
假设你的一个游戏和标签是按照id绑定的,那么直接按照匹配个数排序就好了吧。二进制解决方案没想到
如果绑定的id还是有序的那么还能在寻找匹配个数时再优化
这个问题难度在于一般没有数据库支持这种功能,直接处理复杂度要逆天。
研究了一天,弄出来了,二进制版本:
将每一个
tag
保存在二进制的一位,比如:a->001
, b->010
, c->0100
,然后也将每一个游戏的标签转换为二进制,比如有两个标签:011
。通过定时任务去计算,只需要计算两个二进制与
就可以了,然后获取结果,最后汇聚再排序就好了。复杂度还是很高。另一种方式是
es
,可以实时获取,想办法把权重重置为匹配到一个设为1
就好了,然后权重排序尝试了半天才能es实现
。