我认为标题中的问题说明了一切,并且是一般性的。
我也可以举一个具体的例子:
我已标记文章,希望找到与其关联的标记的similar
文章
评分函数将查看两篇文章并统计共同的标签数量。
由于分数没有存储在任何地方,我每次需要在文章中找到类似文章时都要计算分数。
But this is too expensive.
- 一般来说,这类问题的常见解决方法是什么?
- 对于我的特定
醇>tag
问题,是否有更好的方法? (例如solr's moreLikeThis)
修改
如果重要的话,我正在使用postgres
我正在寻找人们成功使用的一般解决方案,例如you should batch calculate the score and save it somewhere
等......
答案 0 :(得分:0)
通常,处理这种情况的方法是通过预先计算结果。您可以通过以下几种方式实现这一目标:
一个。您可以使用类似触发器(在SQL 99标准中添加)来更新计数,因为在源表中添加,更新或删除行。在此解决方案中,您对源表的插入,更新和删除进行了(可能)小的牺牲,以便在检索信息方面取得重大进展。
湾您可以使用数据仓库接收报告数据的实时数据延迟。这意味着您接受从数据仓库查询的数据将按一些可接受的分钟数,小时数,天数或周数过时。数据仓库通过定期查询实时OLTP(在线事务处理)数据并更新包含预先计算结果的OLAP(联机分析处理)数据库来工作。然后,您可以从OLAP数据或OLTP和OLAP数据的组合中运行报告。不需要正式的数据库仓库来获得相同的结果。您可以编写一个程序,该程序在定时器上执行,该定时器使用更新的结果定期更新表。