Условный поиск в Rails 3 Sunspot Solr применяется только к новым записям

Я пытаюсь выполнить запрос и найти 20 записей, недавно созданных в нескольких моделях, с помощью драгоценного камня sunspot_solr. В настоящее время это достигается без проблем, но я хотел добавить некоторые дополнительные проверки только для одной из искомых моделей.

В настоящее время в моей модели пользователя перечислены все новые созданные пользователи, но я хочу, чтобы в нем отображались только пользователи, подтвердившие свой адрес электронной почты. Я использую Devise для аутентификации пользователей и использую активную запись, чтобы найти всех пользователей, которые не были подтверждены. Я бы сделал что-то вроде:

User.where("confirmed_at is null")

Или наоборот, чтобы проверить обратное. Я попытался интегрировать это с моим поиском solr, так что...

Модель

#Unless the user being searched hasn't been confirmed...
searchable :unless=> proc { |user| user.confirmed_at == nil } do
    time :created_at
    time :confirmed_at
  end 

Контроллер

@updates = Sunspot.search(Upload,Help,User) do    
      without(:confirmed_at, nil)
      order_by(:created_at, :desc)
      paginate page: 1, per_page: 20
end

Однако это добавленное условие исключило только пользовательские записи, созданные после того, как условие было добавлено в модель. Я не совсем уверен, как работает индексация, но, похоже, она кэширует старую информацию, когда новые добавленные условия не применялись. Я могу подтвердить это, создав новую запись пользователя, и я сразу замечаю, что она не индексируется, пока я не проверю адрес электронной почты.

Что я пробовал:

  1. Остановка и перезапуск сервера
  2. Остановка сервера и попытка остановить и перезапустить solr, но это привело к ошибке PID, не найденной

person Noz    schedule 17.07.2012    source источник


Ответы (1)


Прочитав немного больше об индексации, я подтвердил свои подозрения и обнаружил, что мне нужно переиндексировать поиск. Для этого я просмотрел ознакомительные сведения о Sunspot и нашел следующую строку:

bundle exec rake sunspot:solr:reindex

У меня есть дурная привычка пытаться использовать технологии еще до того, как я понимаю, что они делают...

person Noz    schedule 17.07.2012