我的网站提供了大量标记和分类的内容,我正在尝试创建一个强大的算法来根据用户需求排列内容。用户可以选择他们最感兴趣的标签,并且与这些标签匹配的内容将被赋予更高的优先级。此外,内容可以“喜欢”(优先推送),时间衰减优先推送内容。因此,最终,用户应该看到与他们感兴趣的内容相符的相对较新的内容,并且也受到其他用户的欢迎。
当前算法的工作方式如下:
content
表中提取所有项目。为每个项目分配1分。content_tags
检查user_tags
以查看从步骤1中拉出的阵列中是否存在匹配项。如果是,请对该项目的分数应用乘数。content_likes
以查看每件商品有多少喜欢。根据此金额应用另一个乘数。正如您可能已经知道的那样,这是一个缓慢的算法,它不仅需要运行查询来提取每一段内容,而且还必须运行单独的查询来检查content_tags
,user_tags
和content_likes
。查询太多了!
我想我的第一个问题是:我做错了吗?除此之外,你能想出任何方法来优化我上面总结的一切吗?假设项目和用户具有相关标签,则算法本身运行良好。但我担心当我的content
桌子增长到成千上万的时候,我会陷入一团糟。
感谢您的帮助!
答案 0 :(得分:2)
使用许多查询会降低页面速度。 尝试将它们尽可能少地组合在一起,请使用mysql表上的索引!您会注意到创建索引肯定会对页面的加载时间产生影响。