# 广场作品排序推荐算法说明 ## 📊 当前排序算法(简单版) ### 1. 最新排序 (latest) ```sql ORDER BY pw.create_time DESC ``` - **逻辑**: 按发布时间倒序 - **优点**: 简单直接,新作品优先展示 - **缺点**: 忽略作品质量,优质老作品难以被发现 ### 2. 热门排序 (hot) ```sql ORDER BY pw.like_count DESC, pw.create_time DESC ``` - **逻辑**: 先按点赞数倒序,再按时间倒序 - **优点**: 高质量作品排前面 - **缺点**: - 老作品积累点赞多,新作品难出头 - 没有时间衰减,不符合"热度"概念 - 只考虑点赞,忽略浏览、评论等互动 --- ## 🚀 优化方案:智能推荐算法 ### 方案一:时间衰减热度算法(推荐) #### 热度公式 ``` 热度分 = (点赞权重 × 点赞数 + 浏览权重 × 浏览数) / (发布时间距今小时数 + 2)^衰减系数 ``` **参数设置**: - 点赞权重: 10 - 浏览权重: 1 - 衰减系数: 1.5 - 时间基数: 2 (避免除零,新作品有初始优势) **示例计算**: ``` 作品A: 100赞, 1000浏览, 发布24小时 热度 = (10×100 + 1×1000) / (24 + 2)^1.5 = 2000 / 132.3 ≈ 15.1 作品B: 50赞, 500浏览, 发布2小时 热度 = (10×50 + 1×500) / (2 + 2)^1.5 = 1000 / 8 = 125 作品B虽然数据少,但因为新鲜度高,热度分更高! ``` #### SQL实现 ```sql SELECT pw.*, (10 * pw.like_count + 1 * pw.view_count) / POW(TIMESTAMPDIFF(HOUR, pw.create_time, NOW()) + 2, 1.5) as hot_score FROM plaza_work pw WHERE pw.status = 'published' AND pw.audit_status = 'approved' ORDER BY hot_score DESC ``` ### 方案二:威尔逊得分算法(适合评分系统) 如果未来加入评分功能,可使用威尔逊得分: ``` 威尔逊下界 = (p + z²/2n - z × √(p(1-p)/n + z²/4n²)) / (1 + z²/n) 其中: - p = 好评率 (点赞数 / (点赞数 + 踩数)) - n = 总投票数 - z = 置信度系数 (95%置信度时 z=1.96) ``` ### 方案三:多维度评分算法 #### 综合评分公式 ``` 总分 = 质量分 × 40% + 热度分 × 30% + 新鲜度分 × 20% + 互动分 × 10% ``` **各维度计算**: 1. **质量分** (0-100): ``` 质量分 = MIN(点赞率 × 100, 100) 点赞率 = 点赞数 / MAX(浏览数, 1) ``` 2. **热度分** (0-100): ``` 热度分 = MIN((点赞数 × 10 + 浏览数) / 平台平均热度 × 50, 100) ``` 3. **新鲜度分** (0-100): ``` 新鲜度分 = MAX(100 - 发布小时数 × 2, 0) ``` 4. **互动分** (0-100): ``` 互动分 = MIN((点赞数 + 评论数 × 3) × 2, 100) ``` --- ## 🎯 推荐的实施方案 ### 第一阶段:实现时间衰减热度算法 修改 `PlazaWorkMapper.java`: ```java @Select("") List> findPublicWorksList( @Param("taskType") String taskType, @Param("sortBy") String sortBy, @Param("offset") int offset, @Param("size") int size ); ``` ### 第二阶段:添加智能推荐排序 增加新的排序方式 `recommend`: ```java // DTO中添加 public enum SortType { LATEST, // 最新 HOT, // 热门(时间衰减) RECOMMEND, // 智能推荐(多维度) QUALITY // 高质量(点赞率) } ``` ### 第三阶段:个性化推荐 基于用户历史行为(浏览、点赞的作品类型)推荐相似作品: 1. 统计用户最喜欢的任务类型(task_type) 2. 统计用户最喜欢的模型(model_name) 3. 提取用户点赞作品的标签 4. 计算作品与用户偏好的匹配度 --- ## 📝 实施建议 ### 立即实施(基础优化) ✅ 实现时间衰减热度算法 ✅ 添加高质量排序(按点赞率) ✅ 优化数据库索引 ### 短期计划(1-2周) 🔄 添加多维度评分算法 🔄 实现推荐排序 🔄 添加排序参数配置化 ### 长期计划(1-2个月) ⏳ 个性化推荐系统 ⏳ 机器学习推荐模型 ⏳ A/B测试不同算法效果 --- ## 🔧 审核接口补充说明 ### 当前审核接口功能 1. ✅ 查询待审核列表 2. ✅ 单个审核 3. ✅ 批量审核 4. ✅ 审核统计 5. ✅ 审核历史 ### 可能需要的补充接口 #### 1. 撤销审核(管理员误操作) ```java POST /admin/plaza/audit/revoke { "workNo": "WORK-xxx", "reason": "误操作,需要重新审核" } ``` #### 2. 审核详情查询(含完整上下文) ```java GET /admin/plaza/audit/detail/{workNo} // 返回:作品信息 + 作者信息 + 历史审核记录 ``` #### 3. 快捷审核(一键通过前N个) ```java POST /admin/plaza/audit/quick-approve { "count": 10, // 通过最早的10个待审核作品 "taskType": "text_to_image" // 可选:指定类型 } ``` #### 4. 违规关键词检测(AI辅助审核) ```java GET /admin/plaza/audit/keyword-check/{workNo} // 返回:敏感词检测结果,辅助人工审核 ``` #### 5. 审核员工作量统计 ```java GET /admin/plaza/audit/admin-stats?adminId=1&startTime=xxx&endTime=xxx // 返回:某审核员的审核数量、通过率等 ``` --- ## 💡 是否需要补充以下功能? 请告诉我您需要: 1. **优化排序算法** - 实现时间衰减热度算法? 2. **补充审核接口** - 需要哪些额外的审核功能? 3. **个性化推荐** - 是否需要基于用户行为的推荐? 4. **违规检测** - 是否需要AI辅助审核(敏感词过滤)? 我可以立即为您实现!