Sunspot: Как работает дельта-индексация? - PullRequest
1 голос
/ 17 июля 2011

Я исследую Sunspot как возможное решение для индексации нашего проекта.Есть одна вещь, о которой я не нахожу никакой информации: как обрабатываются обновления данных.Если у меня есть «настройка» класса, который я хочу проиндексировать, как сервер solr получает уведомление об изменениях объекта?

Кроме того, рассмотрим следующий сценарий:

У меня есть класс Artworkкакой синоним "has_many" и я бы построили свой индекс следующим образом:

Sunspot.setup(Artwork)
  text :synonyms do
    synonyms.map { |s| s.name }
  end
end

Учитывая произведение "Мона Лиза" с синонимами "La Gioconda" и "Не такая большая улыбка".Когда я сейчас обновлю последний синоним, будет ли извещен solr и будет ли он перестроен для индекса «Мона Лиза»?

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Если вы используете Sunspot :: Rails и модель ActiveRecord, существует ловушка жизненного цикла, которая будет автоматически обновлять данные записи в Solr при каждом сохранении модели. Однако вышеприведенное выглядит так, как будто вы используете чистый Sunspot, и в этом случае вам нужно настроить свой собственный хук жизненного цикла, например ::100100

after_save { |artwork| Sunspot.index(artwork) }

Вам также понадобится собственная логика жизненного цикла для любой ситуации, в которой при обновлении зависимой модели требуется обновить родительский документ в Solr (например, обновления непосредственно для моделей синонимов выше).

0 голосов
/ 18 июля 2011

Нет, с Solr не существует таких автоматических уведомлений.Поскольку синонимы хранятся в текстовом файле, вам придется перезапустить сервер Solr, а затем переиндексировать.То же самое с любой конфигурацией solr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...