2015-07-20 69 views
0

我在ROR中使用太阳黑子solr,我需要帮助创建一个使用两个表的可搜索块(两个表的连接) 我想要在执行时形成的指标是:在太阳黑子solr + rails中使用两个表索引4

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.And我想他们是存储领域(没有数据库命中)。

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

任何帮助吗?

回答

0

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

+0

我从table_two删除记录后重新编制索引...但我仍然在搜索结果中获得:'“title”:“这是标题”,“id”:null' ....我没有要id为空。我希望它不会成为搜索结果...... – smanvi12

0

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

虽然我不确定它的正确方法。