Solr пятно в разных средах - PullRequest
4 голосов
/ 03 мая 2011

Так что я использовал solr sunspot в течение нескольких дней и немного сходил с ума от проблемы с ним. Я ищу ответ на разных сайтах, но у многих людей разные идеи. Я пытаюсь выяснить, как sunspot управляет индексированием / переиндексированием моделей в различных средах с включенной автоматической индексацией. Вот к чему я пришел:

Dev / Prod: сохранение / обновление объекта автоматически обновляет индексацию этого объекта в solr

Тест: сохранение / обновление объекта не приводит к автоматическому обновлению индекса, и вам необходимо вызвать object.reindex! чтобы оно вступило в силу.

Консоль: То же, что и тестирование. Для правильного обновления solr требуется переиндексация.

Так это выглядит правильно? Меня так долго убивало, что-то не так с моей настройкой солнечного пятна или она просто не работает одинаково в этих разных средах. Любая помощь будет принята с благодарностью!

Ответы [ 2 ]

9 голосов
/ 03 мая 2011

После обновления документа в Solr вы должны выполнить «commit», чтобы сказать Solr записать изменения на диск и заставить их начать появляться в результатах поиска.Sunspot :: Rails позаботится об этом автоматически в ходе запроса Rails, но вне этого (в тестах, из консоли) вам нужно сделать это явно.Это просто Sunspot.commit.

1 голос
/ 06 декабря 2011

Существует три основных способа обновления индекса:

  1. object.index: помечает объект для индексации, но не может быть сразу проиндексирован
  2. object.index !: немедленно индексирует объект
  3. Class.reindex: немедленно индексирует все объекты в модели

Похоже, вам следует использовать метод .index! вместо метода .index на консоли.

...