向登录用户提供个性化搜索结果的一些技术是什么?我能想到的一种方法是分析用户的浏览历史。
Tracking:用户的活动日志,比如页面浏览和点击“喜欢”按钮,都可以用来对搜索结果产生偏见。
问题1:如何跟踪用户的浏览历史?一个列为user_id、number_of_hits、page id的表?如果我每天有1000名访客,平均每个人浏览10页,那么每次需要个性化推荐时,会不会有大量的select记录?这张桌子将以每月300 K行的速度增长!每次进行搜索时,select都要花费越来越长的时间。我想用来记录“喜欢”的表将采用相同的表格设计。
问题2:如何偏倚搜索结果?例如,如果用户一直在搜索苹果产品,那么用户喜欢苹果产品并随后将搜索偏向于苹果产品的搜索引擎realise是如何实现的呢?标记页面并在访问的页面上积累标签记录?
发布于 2011-06-29 19:34:11
您可能不想将关系数据库用于这类事情,看看mongodb或cassandra。这是因为您基本上希望在用户的历史记录中添加一个新列,所以面向列的数据库更有意义。
发布于 2011-06-29 19:36:23
每月300 k行并不是很大,事实上,这几乎是零。无论您是使用关系数据库还是非关系数据库,都不重要。
直截了当的办法如下:
时间戳、用户、操作、misc信息
(确保尽可能多地输入信息,这样就不需要将这个数据仓库表与任何其他表连接起来)
>G 213的汇总表。
发布于 2011-06-29 19:39:36
如果您只存储最后的X结果,而不是所有的结果,那么它很可能是可行的。可能会让事情变慢,但会奏效的。任何时候你写更多的数据和读取更多的数据,都会产生影响。适当的DBA方法(如索引和查询优化)可能会有所帮助,但无论您使用什么,都会产生影响。
我会亲自考虑将用户的默认视图存储在DB中,并使用会话来跟踪其余的视图。当然,当你登录的时候就没有历史记录了。但是您可以利用这一点突出显示一组您认为对引导用户重要或相关的特殊页面。一种突出的系统。更快,更容易,更方便用户。
至于偏差,您可以为每条记录编写一组关键字,并相应地对其进行数组排序。使用PHP不会非常困难。
https://stackoverflow.com/questions/6526132
复制相似问题