У меня есть модель Fieldnote в моем приложении, которая has_many: activity прикреплена к ней через таблицу с именем: fieldnote_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
Теперь все работает ОТЛИЧНО. Проблема в том, что если я изменяю, какие действия, связанные с полевой заметкой, результаты поиска не меняются, потому что, похоже, индексы для этой полевой заметки не меняются. У меня создалось впечатление, что флаги: auto_index => true и: auto_remove => true, когда я определяю индекс с возможностью поиска, будут отслеживать новые ассоциации (или удаленные ассоциации), но, похоже, это не так. Как мне это исправить?