Solr commit y optimiza preguntas


Tengo un sitio web de clasificados. Los usuarios pueden poner anuncios, editar anuncios, ver anuncios, etc.

Cada vez que un usuario pone un anuncio, estoy agregando un documento a Solr. No se, sin embargo, cuando cometerlo. Cometer ralentiza las cosas de lo que he leído.

¿Cómo debo hacerlo? Autocommit cada 12 horas más o menos?

Además, ¿cómo debo hacerlo con optimize?

Author: Bryan Ash, 2010-01-26

4 answers

Un poco más de detalle sobre Commit / Optimize:

Commit: Cuando está indexando documentos a solr, ninguno de los cambios que está haciendo aparecerá hasta que ejecute el comando commit. Por lo tanto, el momento de ejecutar el comando commit realmente depende de la velocidad a la que desea que los cambios aparezcan en su sitio a través del motor de búsqueda. Sin embargo, es una operación pesada y por lo tanto debe hacerse en lotes no después de cada actualización.

Optimizar: Esto es similar a un comando de desfragmentación en un disco duro unidad. Reorganizará el índice en segmentos (aumentando la velocidad de búsqueda) y eliminará cualquier documento eliminado (reemplazado). Solr es un almacén de datos de solo lectura, por lo que cada vez que indexe un documento, marcará el documento anterior como eliminado y luego creará un documento nuevo para reemplazar el eliminado. Optimizar eliminará estos documentos eliminados. Puede ver el recuento de documentos de búsqueda vs. documentos eliminados yendo a la página de estadísticas de Solr y mirando los números numDocs vs. maxDocs. El la diferencia entre los dos números es la cantidad de documentos eliminados (no aptos para la búsqueda) en el índice.

También Optimize construye un índice completamente NUEVO a partir del anterior y luego cambia al nuevo índice cuando se completa. Por lo tanto, el comando requiere el doble de espacio para realizar la acción. Por lo tanto, deberá asegurarse de que el tamaño de su índice no exceda el %50 del espacio disponible en el disco duro. (Esta es una regla general, por lo general necesita menos que %50 debido a eliminado documentos)

Servidor de Índice / Servidor de Búsqueda: Paul Brown tenía razón en que el mejor diseño para solr es tener un servidor dedicado y ajustado a la indexación, y luego replicar los cambios en los servidores de búsqueda. Puede ajustar el servidor de índices para que tenga varios puntos finales de índice.

eg: http://solrindex01/index1; http://solrindex01/index2

Y dado que el servidor de índices no está buscando contenido, puede configurarlo con diferentes huellas de memoria y comandos de calentamiento de índices, etc.

Espero que esta información sea útil para cada.

 136
Author: James Roland,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-10-24 21:15:02

En realidad, comprometerse a menudo y optimizar hace que las cosas sean realmente lentas. Es demasiado pesado.

Después de un día de buscar y leer cosas, descubrí esto:

1 - Optimizar hace que el índice se duplique en tamaño mientras se optimiza, y hace que las cosas sean realmente lentas.

2 - Confirmar después de cada adición NO es una buena idea, es mejor confirmar un par de veces al día, y luego hacer una optimización solo una vez al día como máximo.

3-Commit se debe establecer en " autoCommit" en el solrconfig.archivo xml, y allí se debe ajustar de acuerdo a sus necesidades.

 37
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-26 17:49:33

La forma en que este tipo de cosas se hace generalmente es realizar operaciones de commit/optimize en un nodo Solr ubicado fuera de la ruta de solicitud para sus usuarios. Esto requiere hardware adicional, pero garantiza que la penalización de rendimiento de las operaciones de indexación no afecte a los usuarios. La replicación se utiliza para transferir periódicamente archivos de índice optimizados desde el nodo maestro a los nodos que realizan consultas de búsqueda para los usuarios.

 7
Author: Paul Brown,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-07-12 07:11:14

Pruébalo primero. Sería realmente malo si evitaras una solución simple y elegante solo porque lees que podría causar un problema de rendimiento. En otras palabras, evite la optimización prematura.

 0
Author: John,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-01-26 05:15:27