По-видимому, переиндексация конкретной модели в Sunspot не имеет значения во времени - PullRequest
18 голосов
/ 30 декабря 2011

Моему приложению обычно требуется 20 минут для переиндексации в целом. Есть небольшая таблица с парой записей, которую я хочу переиндексировать снова. Я хочу сэкономить время, поэтому я выполнил команду rake sunspot:solr:reindex[500,Deal]. Это взято прямо из readme Github и предполагает переиндексировать только одну модель.

Время, необходимое для переиндексации в этой команде, все еще составляет 20 минут, поэтому разница во времени не принимается. Я что-то не так делаю?

Ответы [ 2 ]

31 голосов
/ 12 февраля 2012

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

Решение: стереть ": solr". Просто напишите:

rake sunspot:reindex[batch_size,Model]

Если вы не укажете batch_size, вы должны поставить запятую "," как:

rake sunspot:reindex[,model]
26 голосов
/ 30 декабря 2011

Теперь я вхожу в консоль Rails и вызываю оттуда reindex:

Deal.solr_reindex(:batch_size => 1000, :include => :period)

Это прекрасно работает, поскольку теперь я могу переиндексировать только одну модель, включая связанные таблицы для повышения скорости.Раньше индексирование выполнялось только со скоростью 200 / сек, а теперь - 1000 / сек.

(Фактически, поскольку переиндексация через console или rake приведет к очистке файла индекса, что приведет к короткому периоду пустого индекса,Сейчас я звоню solr_index большую часть времени, чтобы обновить индекс.)

...