Php 优化从非常大的MySQL表中提取数据的算法
我的网站提供了大量标记和分类的内容,我正试图创建一个强大的算法,使内容符合用户的需求。用户可以选择他们最感兴趣的标签,与这些标签匹配的内容将获得更高的优先级。此外,内容可以被“喜欢”(按优先级向上推),时间衰减按优先级向下推。因此,最终,用户应该看到与他们感兴趣的内容一致的相对新的内容,并且也受到其他用户的欢迎 当前算法的工作原理如下:Php 优化从非常大的MySQL表中提取数据的算法,php,mysql,algorithm,Php,Mysql,Algorithm,我的网站提供了大量标记和分类的内容,我正试图创建一个强大的算法,使内容符合用户的需求。用户可以选择他们最感兴趣的标签,与这些标签匹配的内容将获得更高的优先级。此外,内容可以被“喜欢”(按优先级向上推),时间衰减按优先级向下推。因此,最终,用户应该看到与他们感兴趣的内容一致的相对新的内容,并且也受到其他用户的欢迎 当前算法的工作原理如下: 从content表中提取所有项目。为每个项目分配1分 对照用户标签检查内容标签,查看从步骤1提取的数组中是否存在匹配项。如果是这样,对该项目的分数应用乘数 检查
content
表中提取所有项目。为每个项目分配1分用户标签检查内容标签
,查看从步骤1提取的数组中是否存在匹配项。如果是这样,对该项目的分数应用乘数
content\u likes
,查看每个项目有多少喜欢。根据此数量应用另一个乘数内容标签
,用户标签
,以及内容标签
。太多的疑问
我想我的第一个问题是:我做错了吗?除此之外,你能想出任何方法来优化我上面总结的一切吗?假设项目和用户都有相关的标签,那么算法本身工作得很好。但我担心,当我的内容表增加到数万项时,我会陷入一片混乱
谢谢你的帮助 使用许多查询会降低页面速度。
尝试将它们组合成尽可能少的索引,请在mysql表上使用索引!你会注意到创建索引肯定会影响页面的加载时间。Q:你能想出任何方法来优化我上面总结的内容吗?答:为高效的查询设计数据库模式并创建数据库索引。为什么不记录每个内容的分数呢。那么你就不需要ti去做所有的事情了,这就很容易了,就像为那些内容获取分数一样。我认为跟踪分数的问题在于,它会根据每个用户的喜好而变化。如果它只包含喜欢和时间衰减,我可以保持分数,但是用户标签增加了新的复杂度。