2010-10-02 13 views
10

Estoy cambiando la búsqueda de texto completo en mi sitio a sphinx. Voy a usar SphinxSE para realizar las búsquedas.Usar índices principales y delta en sphinx

creé 2 índices, como se especifica en el manual: http://www.sphinxsearch.com/docs/manual-0.9.9.html#live-updates

Parece que funciona, y cosas por el índice diferente en su propio índice, pero estoy un poco confundido acerca de cómo debería manejar la actualización del índice, la fusión, y reconstrucción.

La forma en que entiendo es que cron lo ejecuta "indexer delta --rotate" cada 5 minutos más o menos, lo que agregaría nuevos envíos al índice. Luego, una vez al día, fusionaría el índice delta en el índice principal ejecutando "indexer main delta --rotate". luego, una vez al mes, aproximadamente, ejecutaré "indexer --all" para reconstruir todos los índices.

¿Estoy haciendo esto bien o me estoy perdiendo algo?

+0

Para el registro - que es más o menos mi configuración, todo a través de cron. +1 para preguntar sin embargo, como me han esbozado sobre cómo se está ejecutando actualmente. ¡Escuchemos esas mejores prácticas! –

+0

Es solo cada vez que ejecuta cualquiera de esos comandos ... ¿no dejaría de funcionar la búsqueda mientras se ejecuta? –

+0

Bueno, en mi caso ... indexer --todo --rotate --config /path/to/sphinx.conf se ejecuta en 0.024 segundos (75k docs por segundo, ejecutando 5 índices para 4 dominios). Si mis índices crecen significativamente, tendría un problema. –

Respuesta

2

--rotate solo generaría índice en tmp (necesita disco de espacio) y cambiaría + reiniciar búsqueda cuando estuviera listo.

sobre delta, debe usar la consulta previa para calcular el "límite" máximo (id) el id de los principales índices debajo del límite, y delta está hasta este límite.

si tiene una marca de tiempo (indexados si es posible) se puede usar

principal -> donde timefile < hoy() delta -> donde timefile> = hoy()

3

Suena muy parecido a la configuración que hice para un cliente. Y no, la búsqueda no dejará de funcionar durante las actualizaciones. De los documentos de Sphinx:

--rotate se utiliza para rotar índices. A menos que tenga la situación en la que puede llevar a cabo la función de búsqueda fuera de línea sin preocupar a los usuarios, casi seguro necesitará mantener activa la búsqueda al indexar nuevos documentos . --rotate crea un segundo índice , paralelo al primero (en el mismo lugar , que incluye .new en los nombres de archivo). Una vez completa, paso a paso notifica searchd a través de envío de la señal SIGHUP y searchd se intento de cambiar el nombre de los índices (cambio de nombre de los ya existentes para incluir .old y cambiar el nombre del .new para reemplazar ellos), y luego empezar a servir de los archivos más nuevos . Dependiendo de la configuración de seamless_rotate, puede haber un ligero retraso de al poder buscar los índices más recientes.

Cuestiones relacionadas