2011-12-07 16 views
5

Sto lavorando alla configurazione di una semplice installazione su più livelli di Rails 3.1: app Web su uno o più server, database Postgresql e gli indici di ricerca Sfinge su un server remoto.ThnkingSphinx (sphinxd) sul server di database remoto con indici delta?

In una configurazione a server singolo stiamo utilizzando ThinkingSphinx e indici delta (utilizzando delayed_job), quindi un cron notturno per aggiornare l'indice principale. Funziona alla grande.

Quindi: l'utente crea contenuto indicizzabile; l'app dice a delayed_job di pianificare un aggiornamento; delta-indexer aggiunge nuovi contenuti a delta-index; le ricerche guardano entrambe per risolvere correttamente la query di ricerca; il lavoro notturno ricrea un singolo indice principale.

La documentazione per ThinkingSphinx dice here near the bottom

L'approccio migliore è quello di avere Sfinge, il database e il compito di elaborazione di lavoro in ritardo tutti in esecuzione su una macchina.

Ma non sono chiaro come inviare le informazioni necessarie per il processo di lavoro in ritardo al singolo server da eseguire. Ho letto alcune cose sull'avere un file system condiviso (yuck - davvero?). Non ho ancora letto il codice, ma forse c'è un modo semplice?

Ecco sperando!

risposta

4

Il lavoratore in ritardo (in esecuzione sul server DB/Sphinx) fa riferimento al database, nel contesto dell'app Rails - quindi è necessario anche l'app sul server DB/Sphinx, ma solo per eseguire il DJ lavoratore.

Dal punto di vista dei server delle applicazioni, TS aggiungerà semplicemente i record del lavoro al database come di consueto.

Si potrà anche impostare le seguenti impostazioni - questo si va alla fine della vostra config/application.rb:

ThinkingSphinx.remote_sphinx = Rails.env.production? 

e aggiungere la versione Sfinge al tuo config/sphinx.yml:

production: 
    version: 2.0.1-beta 
+0

Grazie @pat. Poiché stiamo eseguendo delayed_job per altre cose durante la creazione di nuovi contenuti indicizzabili (ad esempio, l'invio di e-mail), ho avuto l'idea che questo fosse il punto in cui eravamo in ritardo con l'indicizzazione delta ritardata. Ma ovviamente non lo è: il pacchetto "bundle exec rake ts: dd' è dove viene eseguita l'indicizzazione delta. Ritardato, ritardato. Mi sono fatto la cornacchia :-) Grazie! –

Problemi correlati