5

Estoy trabajando para configurar una configuración simple de múltiples niveles de Rails 3.1: aplicaciones web en uno o más servidores, base de datos postgresql y nuestros índices de búsqueda de Sphinx en un servidor remoto.ThnkingSphinx (sphinxd) en el servidor de base de datos remota con índices delta?

En una configuración de servidor único, usamos ThinkingSphinx e índices delta (utilizando el método de trabajo demorado), y luego un cron nocturno para actualizar el índice principal. Funciona genial.

Entonces: el usuario crea contenido indexable; la aplicación le dice a retrasyed_job que programe una actualización; delta-indexer agrega contenido nuevo a delta-index; las búsquedas miran a ambos para resolver la consulta de búsqueda correctamente; el trabajo nocturno recrea el índice principal individual.

La documentación para ThinkingSphinx dice here near the bottom

El mejor enfoque es tener Esfinge, la base de datos y el retraso en el procesamiento de tareas tarea todos corriendo en una máquina.

Pero no tengo claro cómo enviar la información necesaria por el proceso de trabajo retrasado al servidor único que se ejecutará. He leído algunas cosas sobre tener un sistema de archivos compartido (yuck, ¿en serio?). Aún no he leído el código, pero tal vez haya una manera simple.

¡Aquí está la esperanza!

Respuesta

4

El trabajador de trabajo retrasado (que se ejecuta en su servidor DB/Sphinx) hace referencia a la base de datos, en el contexto de su aplicación Rails, por lo que necesitará la aplicación en su servidor DB/Sphinx, pero solo para ejecutar el DJ trabajador.

Desde la perspectiva de sus servidores de aplicaciones, TS simplemente agregará registros de trabajos a la base de datos como de costumbre.

Usted también desea establecer los siguientes ajustes - esto se va al final de su config/application.rb:

ThinkingSphinx.remote_sphinx = Rails.env.production? 

y añadir la versión de la esfinge a su config/sphinx.yml:

production: 
    version: 2.0.1-beta 
+0

Gracias @pat. Debido a que estamos ejecutando el trabajo demorado para otras cosas cuando creamos nuevo contenido indexable (por ejemplo, el envío de correo electrónico), tuve la idea de que aquí es donde estábamos la indexación delta retrasada que estaba sucediendo. Pero, por supuesto, no es así - el 'ejecutor del paquete bundle: dd' es donde se realiza la indexación delta. Retrasó esto, retrasó eso. Tengo cornfused :-) ¡Gracias! –

Cuestiones relacionadas