我正在使用 AFINN 111 确定帖子的态度,可以在 这里找到。每当帖子中提到其中一个词时,都会选择并添加它们的对应值,以给出累积分数,这有助于确定帖子的性质,无论是 +ve 还是 -ve。
我有一个数组content = ["bad", "bad", "dog"]
。我想获得这篇文章中使用的单词的总分。所以,我触发了一个数据库查询。
score = Sentiment.where(word: content).pluck(:value).inject(:+)
我得到的结果是-3。“坏”这个词对应的分数是-3。由于“坏”这个词重复了两次,我希望得到的分数是-6。
我尝试在 rails 控制台中触发它以检查返回了多少对象。
Sentiment.where(:id => [1,1])
只返回一个对象...是否有任何选项可以返回重复值?
一种相当简单的解决方案是遍历数组。
score = 0
content.each do |word|
score += Sentiment.where(word: word).pluck(:value).first
end
但这将涉及触发 n 个查询,而不是通过单个查询完成工作......还有其他方法可以实现这一点吗?