Это мой первый пост в StackOverflow, и это старый вопрос, но я чувствовал, что могу как-то помочь: D Периодическая перестройка индекса Solr - очень дорогая задача, вы должны избегать подобных вещей на производстве!То, что вы ищете, может быть наилучшим образом достигнуто тремя способами:
1 - отредактируйте ваш sunspot.yml и добавьте строку
auto_commit_after_request = true
Это сообщит sunspotобновлять индекс каждый раз новая запись модели сохраняется (или удаляется).Это будет поддерживать ваш индекс обновленным, но может быть дорогостоящим.
2 - создайте задачу rake (может быть запущена с включенным cron в работнике DelayedJob), как это
task :update_index => :environment do <br>
Sunspot.commit_if_dirty <br>
end
Это намного дешевле, чем выполнение коммита после каждого обновления модели, но имейте в виду, что это создает проблему возможной согласованности вашего индекса, что хорошо для добавления, но может быть неприятно для удаления: это приведет к созданию потерянных записей вваш индекс.Это также проблема, связанная с третьим способом решения этой проблемы ->
3 - отредактируйте файл solrconfig.xml и установите для функции autoCommit
произвольный интервал между фиксациями maxTime
(не забудьте использоватьраз в миллисекундах).5 минут было бы неплохо для большинства приложений, но вы должны проверить это сами.
Надеюсь, это поможет!