在太阳黑子solr + rails中使用两个表进行索引4

时间:2015-07-20 08:46:59

标签: ruby-on-rails solr sunspot-solr

我在ROR中使用sunspot-solr,我需要帮助使用两个表创建一个可搜索的块。(两个表的连接) 我希望在形成索引时执行的查询是:

SELECT a.id,a.title
FROM table_one a,table_two b 
WHERE a.status=1 
AND a.id=b.id 
AND b.status=1  

我想要"标题"字段是可搜索的(文本),只有当两个表中都存在id并且两者都具有状态1.并且我希望它们是存储字段(没有db命中)。

class TableOne
  has_many :table_twos
 searchable do
  text :title, :stored => true
  string :status, :stored => true
  string :id, :multiple => true, :stored => true do
         table_twos.map(&:id)
 end
end

当我搜索一个单词时,我得到了5个结果。

但是当我从table_two中删除其中一个结果的条目并再次搜索同一个单词时...我仍然得到5个结果,而我只得到其他4个。

任何帮助?

2 个答案:

答案 0 :(得分:0)

如果删除存储为solr / sunspot记录的关联记录,您将别无选择,只能重新索引该记录。

答案 1 :(得分:0)

所以为了解决这个问题,我在控制器中做了类似without(:id,nil)的事情,我得到了我想要的结果。

我不确定它是正确的方法。