Day5笔记

随机匹配

为了帮大家更快地发现和自己兴趣相同的朋友

匹配 1 个还是匹配多个?

答:匹配多个,并且按照匹配的相似度从高到低排序

怎么匹配?(根据什么匹配)

答:标签 tags

还可以根据 user_team 匹配加入相同队伍的用户

本质:找到有相似标签的用户

举例:

用户 A:[Java, 大一, 男]

用户 B:[Java, 大二, 男]

用户 C:[Python, 大二, 女]

用户 D:[Java, 大一, 女]

1. 怎么匹配

  1. 找到有共同标签最多的用户(TopN)
  2. 共同标签越多,分数越高,越排在前面
  3. 如果没有匹配的用户,随机推荐几个(降级方案)

编辑距离算法:https://blog.csdn.net/DBC_121/article/details/104198838

最小编辑距离:字符串 1 通过最少多少次增删改字符的操作可以变成字符串 2

余弦相似度算法:https://blog.csdn.net/m0_55613022/article/details/125683937(如果需要带权重计算,比如学什么方向最重要,性别相对次要)

2. 怎么对所有用户匹配,取 TOP(下一期的内容)

直接取出所有用户,依次和当前用户计算分数,取 TOP N(54 秒)

优化方法:

  1. 切忌不要在数据量大的时候循环输出日志(取消掉日志后 20 秒)

  2. Map 存了所有的分数信息,占用内存解决:维护一个固定长度的有序集合(sortedSet),只保留分数最高的几个用户(时间换空间)e.g.【3, 4, 5, 6, 7】取 TOP 5,id 为 1 的用户就不用放进去了

  3. 细节:剔除自己 √

  4. 尽量只查需要的数据:

  5. 过滤掉标签为空的用户 √

  6. 根据部分标签取用户(前提是能区分出来哪个标签比较重要)

  7. 只查需要的数据(比如 id 和 tags) √(7.0s)

  8. 提前查?(定时任务)

  9. 提前把所有用户给缓存(不适用于经常更新的数据)

  10. 提前运算出来结果,缓存(针对一些重点用户,提前缓存)

大数据推荐,比如说有几亿个商品,难道要查出来所有的商品?

难道要对所有的数据计算一遍相似度?

匹配通用

检索 => 召回 => 粗排 => 精排 => 重排序等等

检索:尽可能多地查符合要求的数据(比如按记录查)

召回:查询可能要用到的数据(不做运算)

粗排:粗略排序,简单地运算(运算相对轻量)

精排:精细排序,确定固定排位

匹配算法

最短距离算法

* 编辑距离算法(用于计算最相似的两组标签)

* 原理:https://blog.csdn.net/DBC_121/article/details/104198838

TreeMap内部排序

  • SortedMap(java.util.SortedMap)接口是Map的子接口,SortedMap中增加了元素的排序,这意味着可以给SortedMap中的元素排序。

  • SortedMap的实现TreeMap
    SortedMap接口的实现TreeMap (java.util.TreeMap).

  • 创建TreeMap
    可以通过TreeMap的构造函数创建TreeMap 实例:

SortedMap sortedMap = new TreeMap();
  • 创建TreeMap使用Comparator
    可以使用Comparator的实现作为TreeMap 构造函数的参数 ,这个Comparator将用于对存储在SortedMap中的键、值对的键进行排序:
Comparator comparator = new MyComparatorImpl();
SortedMap sortedMap = new TreeMap(comparator);
  • 排序
    SortedMap中的排序顺序要么是元素的自然排序顺序(如果它们实现了java.lang.Comparable),或由Comparator确定的顺序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/861635.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于FPGA的信号发生器verilog实现,可以输出方波,脉冲波,m序列以及正弦波,可调整输出信号频率

1.算法运行效果图预览 (完整程序运行后无水印)输出方波输出脉冲波 输出m随机序列输出正弦波2.算法运行软件版本 vivado2019.23.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)//the module of juxin signal signal_jux signal_jux_u(.i_clk (clk_low),.i_rst …

Vue-cli脚手架安装介绍

1、安装Vue-cli 可以使用npm或cnpm安装vue-cli项目构想工具 # 添加国内淘宝镜像加速 sudo npm config set registry https://registry.npmmirror.com/ sudo npm install -g @vue/cli 或使用 # 添加国内淘宝镜像加速 sudo npm install -g cnpm --registry https://registry.npmm…

一名程序员决定学点会计基础知识

1. 概述 企业是一种以营利(即获取经济利润)为目的的经济组织。在会计看来,企业一辈子其实只做了三件事:经营、投资和筹资。 在正常情况下,企业的经济活动是一个川流不息的过程。这一过程也是运用、分配及耗用企业经济资源的过程 。由于资金是企业经济资源的货币表现形式或…

追光记——2024软件工程秋个人总结报告

软件工程 https://edu.cnblogs.com/campus/fzu/SE2024作业要求 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315作业目标 软件工程个人总结学号 102201311一、学期回顾 1.1 SE之初印象 论:大三上最难的一门课是哪个? 操作系统吧,毕竟是408要求的大课 数据库也算合…

ov5640_lcd_display学习笔记

最近学习了正点原子fpga ov5640摄像头显示例程,特此记录一下。 系统框架与接口FPGA要操控的外围器件为ov5640摄像头、LCD和DDR3,接口方面也并不算复杂,用到的接口为sccb、dvp以及RGB888。 sccb接口用来配置摄像头寄存器参数,并且iic兼容sccb,所以配置寄存器直接调用iic的驱…

《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群

《docker高级篇(大厂进阶):1.Docker复杂安装详说》包括:安装mysql主从复制、安装redis集群@目录二、高级篇(大厂进阶)1.Docker复杂安装详说1.1安装mysql主从复制1.2安装redis集群1.2.1面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例哈希取余分区一致性哈希算法分区…

ThreeJs-10光线投射与物体交互

要拿到three中的物体去做出处理比如点击事件等等,那么需要类似于打一束光下来,穿透物体通过这个数组拿到先创建1000个立方体创建光线投射与物体交互大概步骤如下

【PHP开发】PHP后端基础

一、PHP 基本概念详解 PHP是一种服务器端脚本语言,常用于动态网站开发和 web 应用程序。以下是 PHP 的基本概念与特点的详细说明: 1.1 PHP 文件的默认文件扩展名 PHP 文件的扩展名通常为 .php,例如 index.php。 PHP 文件可以包含 PHP 代码、HTML、CSS 和 JavaScript。 Web 服…

虽遗憾贯穿始终,恍惚过后,好在苦尽甘来不言弃——2024秋软工实践个人总结博客

目录一、学期回顾1.0 汇总———作业&项目1.1我的想象和初心1.2我的投入(头发)和产出1.2.1 编写代码1.2.2 团队项目参与1.2.3 花费的时间1.3印象最深刻的一集二、总结收获2.1我的软工实践故事(流水账)2.1.0 预备2.1.1个人作业2.1.2 结对作业2.1.3 团队作业2.2新技术或生…

XshellPlus V7中文版绿色免安装版下载及使用教程

XshellPlus 是一款将 Xshell 和 Xftp 打包在一起的强大远程管理工具,结合了 Xshell 和 Xftp 的所有功能,提供更高效的远程控制和文件传输体验。目前xshell个人用户已经可以免费使用,官方已经推出个人版!什么是 XshellPlus? XshellPlus 是一款集成了 Xshell 和 Xftp 的工具…

并非简易SE

这个作业属于哪个课程 https://edu.cnblogs.com/campus/fzu/SE2024这个作业要求在哪里 https://edu.cnblogs.com/campus/fzu/SE2024/homework/13315这个作业的目标 总结回顾这一学期的收获学号 052101418一、学期回顾 在这学期的软工实践课程中,我经历了诸多挑战,也收获了宝贵…

.NET周刊【12月第4期 2024-12-22】

国内文章 dotnet 简单使用 ICU 库进行分词和分行 https://www.cnblogs.com/lindexi/p/18622917 本文将和大家介绍如何使用 ICU 库进行文本的分词和分行。 dotnet 简单聊聊 Skia 里的 SKFontMetrics 的各项属性作用 https://www.cnblogs.com/lindexi/p/18621674 本文将和大家简单…