我正在寻找一种策略来在solr文档上显示个人用户的评分。 即。用户可以在文档上给出1-5的评分,我想在搜索时将它们呈现给他们。
我可以想到两种一般方法。
将评级存储在我的RDBMS中,并在获得solr结果后对其进行查询,并将数据合并到业务逻辑中。
不知何故还将此评级信息存储在solr中,以便返回给定用户的数据。我能想到的只是具有userid的属性名称和rating的值。
假设用户群很大,我担心方法2可能会失控。你可以用solr文件“广泛”吗?你能在文件上放几万个属性吗?性能影响是否仍然比sql db(方法1)的第二次击中更接近2?
还有其他我没想过的方法吗?
答案 0 :(得分:0)
第三个选项可能是添加一个额外的Solr索引,该索引仅包含文档ID,用户ID和用户分配给该文档的分数。然后通过文档&amp ;;来查询分数将非常简单和快速。用户。
答案 1 :(得分:0)
我使用了方法编号1.由于每个用户的评级数量很少(可能小于1000),我只是在登录时缓存所有评级并存储在内存中。然后,在显示SOLR结果时,只需在需要时应用额定值即可。
这样可以避免对每个结果进行数据库调用,也不会使服务器陷入太多困境。此外,当用户更新其评级时,您只需更新数据库并使缓存无效。您不必对SOLR文档进行UPDATE调用。
答案 2 :(得分:0)
我会选择2号,并且只定期更新评级。这样,您可以将评分与Solr计算的相关性分数相混合。
我认为这取决于你是否喜欢Digg / Reddit,其中上/下投票会显着影响所显示的内容,或者它是否只是评分中的另一个因素,例如文档的新内容。如果这只是另一个因素,那么在安静的时间每天,每周或每月一次更新您的文档....