我在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个。
任何帮助?
答案 0 :(得分:0)
如果删除存储为solr / sunspot记录的关联记录,您将别无选择,只能重新索引该记录。
答案 1 :(得分:0)
所以为了解决这个问题,我在控制器中做了类似without(:id,nil)
的事情,我得到了我想要的结果。
我不确定它是正确的方法。