Domanda

Così ogni mattina per avviare il mio assistente, ho bisogno di fare le seguenti operazioni ..

>> sunspot-solr stop
>> sunspot-solr start
>> script/console
>> Organization.reindex
>> Event.reindex
>> Deal.reindex
>> exit
>> script/server

C'è un modo posso fare una scorciatoia nel mio ~ / .profile come alias per eseguire tutto questo per me senza di me scrivendo tutti i giorni?

Ti piace questa anche se non funziona?

alias blam='cur && sunspot-solr stop && sunspot-solr start && script/console && Organization.reindex && Event.reindex && Deal.reindex && exit && script/server'
È stato utile?

Soluzione

Forse questo faciliterà alcuno del dolore?

#Rakefile
desc "Reindex the organizations, events, and deals Solr indexes."
task :reindex => :environment do
  Organization.reindex
  Event.reindex
  Deal.reindex
end

Poi ogni corsa mattutina

> sunspot-solr stop
> sunspot-solr start
> rake reindex
> script/server

Altri suggerimenti

Questo è il mio primo post StackOverflow ed è una questione vecchia, ma sentivo di poter contribuire in qualche modo: D Ricostruire l'indice Solr periodicamente è un compito molto costoso, si dovrebbe evitare di fare cose come questa in produzione! Quello che state cercando può essere realizzato meglio in tre modi:

1 - modifica si sunspot.yml e aggiungere la riga

auto_commit_after_request = true

Questo dirà macchie solari per aggiornare l'indice ogni una nuova voce di modello viene salvato (o eliminato). Ciò manterrà il vostro indice aggiornato, ma può essere costoso.

2 - creare un'attività rake (può essere eseguito con cron su in un operaio DelayedJob) come questo

task :update_index => :environment do
Sunspot.commit_if_dirty
end

Questo è molto meno costoso di fare un commit dopo ogni aggiornamento del modello, ma tenere a mente che questo introduce il problema della eventuale consistenza al vostro indice, che va bene per aggiunge, ma può essere brutto per eliminazioni: esso genererà orfano voci nell'indice. Questo è anche un problema con il terzo modo per risolvere questo problema ->

3 - Modificare il file solrconfig.xml e impostare la funzione autoCommit con un maxTime un intervallo arbitraria tra commit (ricordarsi di usare i tempi in millisecondi). 5 minuti sarebbe bello per la maggior parte delle applicazioni, ma si dovrebbe provare da soli.

Spero che questo aiuti!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top