Ошибка Thinking Sphinx - ResponseError (ошибка searchd (статус: 1): index lead_delta: атрибут 'user_id' не найден):

При обновлении данных модели Lead возникла следующая ошибка:

Riddle :: ResponseError (ошибка searchd (статус: 1): index lead_delta: атрибут 'user_id' не найден): app / controllers / lead_controller.rb: 88: в `блоке в обновлении '

Все работало нормально, пока я не изменил индекс поиска в модели, добавив атрибут user_id. После восстановления индекса sphinx поиск работает нормально, но при обновлении Lead он показывает ошибку 500 и вышеупомянутое сообщение.

В модели Lead у меня есть следующие поисковые индексы и атрибуты:

indexes client_name
indexes company
indexes product.name, :as => :lead_product 
indexes account_id
indexes email
indexes office_phone
indexes mobile_phone

has product_id, account_id, user_id

where "lead_converted = 0"

set_property :delta => :delayed

Контроллер ведет

def обновление

@lead = Lead.find params [: id] response_to do | формат |

Строка 88: if @ lead.update_attributes params [: lead]

У меня есть следующие версии гемов:

'думающий сфинкс', '2.0.3'

загадка (1.3.3)


person amaks    schedule 19.09.2011    source источник


Ответы (1)


Вы выполняете задание ts:rebuild rake? Или ts:index? Первое - это то, что необходимо, поскольку похоже, что демон Sphinx не знает о вашем новом атрибуте (перестройка останавливает Sphinx, переиндексирует, а затем снова запускает Sphinx).

person pat    schedule 20.09.2011
comment
Я запускаю ts: rebuild. И что странно, поиск с атрибутом new user_id работает нормально, это просто обновление Лида, где эта ошибка появилась. - person amaks; 20.09.2011