首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在推荐算法中自动排除已经访问过的项目?

问如何在推荐算法中自动排除已经访问过的项目?
EN

Stack Overflow用户
提问于 2010-01-18 18:16:00
回答 1查看 167关注 0票数 1

我现在正在使用slope One进行推荐。

如何从结果中排除访问过的项目?

我不能简单地通过not in (visited_id_list)来过滤那些访问过的用户,因为这对老用户来说会有可伸缩性问题!

我想出了一个没有not in的解决方案:

代码语言:javascript
复制
select b.property,count(b.id) total from propertyviews a
                                         left join propertyviews b on b.cookie=a.cookie
                                         left join propertyviews c on c.cookie=0 and b.property=c.property
                                         where a.property=1 and a.cookie!=0 and c.property is null
                                         group by b.property order by total;
EN

回答 1

Stack Overflow用户

发布于 2010-01-18 22:06:17

说真的,如果您使用的是MySQL,请查看12.2.10.3. Subqueries with ANY, IN, and SOME

例如:

代码语言:javascript
复制
SELECT s1 FROM t1 WHERE s1 IN    (SELECT s1 FROM t2);

这在我看过的所有MySQL版本中都可用,尽管手册中的章节编号在旧版本中有所不同。

编辑以回应OP的评论:

  1. OK ...像SELECT id FROM t1 WHERE ... AND NOT id IN (SELECT seen_id FROM user_seen_ids where user = ? )这样的东西怎么样?这种形式避免了在SQL语句中传递数以千计的is。
  2. 如果您想完全避免查询中的“针对is列表的测试”部分,我认为这在理论上是不可能的,更不用说如何实现它了。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2085233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档