2011-12-30 14 views
18

zamanında bir fark yaratmıyor gibi görünüyor. Uygulamam genellikle bir bütün olarak yeniden dizine 20 dakika sürüyor. Yeniden kayıt yapmak istediğim birkaç kayıt bulunan küçük bir tablo var. Zaman kazanmak istiyorum, böylece rake sunspot:solr:reindex[500,Deal] komutunu çalıştırdım. Bu, doğrudan Github readme'dan alınır ve yalnızca bir modeli yeniden dizileceğini varsayar.Belirli bir modelin Sunspot'ta yeniden indekslenmesi,

Bu komutta yeniden dizilenme süresi hala 20 dakikadır, bu nedenle alınan süre içinde hiçbir fark yoktur. Yanlış bir şey mi yapıyorum?

cevap

30

I was aynı durumun neden aynı zamanda olduğunu soruyorsunuz.

Çözüm: ": solr" öğesini silin. Sadece yazın:

rake sunspot:reindex[batch_size,Model] 

Eğer tu virgül koymak zorunda batch_size belirtmezseniz "" gibi:

rake sunspot:reindex[,model] 
+1

bu tür ilişkilerine bağlı olarak teşekkürler ve teşekkürler! Ancak cevaplayanlar, aşağıdaki IRB çözümünün daha hızlı olacağını akıllarında bulundurmaktadırlar. – lulalala

+6

Köşeli ayraçları zshell tırmık kovanı: reindex \ [, model \] 'olarak belirtmek zorunda kaldım. – iltempo

26

Şimdi Raylar konsola girip oradan reindex çağırır:

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

Şimdi tek modeli reindex gibi bu harika çalışıyor, hızını artırmak için ilgili tabloları içerir. Önceden sadece 200/sn'de indeksleniyor ve şimdi 1000/sn.

(Aslında, boş endeksinin kısa sürede sonuçlanan dizin dosyasını temizleyecektir konsolu veya tırmık ile yeniden dizin beri, şimdi dizini güncelleştirmek için zamanın solr_index çoğu diyoruz.)

+2

endeksleme için tırmık görev biraz saflık olur. Buradaki darboğaz, ilişkili nesneler için veritabanınıza N + 1 sorgusudur ve konsolda ': include 'kullanımınız, aksi takdirde komisyon görevinde ortaya çıkan bir sürü yük tasarrufu sağlar. Bu çözüm için –

+2

küçük bir ek: dahil modellerin küçük harflerle yazılması gerekiyor ve tekil veya çoğul halindeki –

İlgili konular