【发布时间】:2011-11-15 15:14:47
【问题描述】:
我的应用程序中有一个 Fieldnote 模型,它通过一个名为 :fieldnote_activities 的表附加了多个 :activities。然后我以这种方式定义一个可搜索的索引:
searchable :auto_index => true, :auto_remove => true do
integer :id
integer :user_id, :references => User
integer :activity_ids, :multiple => true do
activities.map(&:id)
end
text :observations
end
然后我有一个搜索模型来存储/更新搜索。因此,搜索模型也与活动有自己的关联。然后我像这样执行我的搜索:
@search = Search.find(params[:id])
@query = Fieldnote.search do |query|
query.keywords @search.terms
if @search.activities.map(&:id).empty? == false
query.with :activity_ids, @search.activities.map(&:id)
end
end
@fieldnotes = @query.results
现在这一切都很好。问题是,如果我更改与 fieldnote 关联的活动,搜索结果不会更改,因为该 fieldnote 的索引似乎不会更改。当我定义可搜索索引时,我的印象是 :auto_index => true 和 :auto_remove => true 标志会跟踪新的关联(或删除的关联),但情况似乎并非如此。我该如何解决这个问题?
【问题讨论】:
标签: ruby-on-rails-3 solr sunspot