SOLR cometer y optimizar preguntas

Tengo un website 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 sé, sin embargo, cuándo cometerlo. Commit ralentiza las cosas a partir de lo que he leído.

¿Cómo debería hacerlo? Autocommit cada 12 horas más o less?

Además, ¿cómo debería hacerlo con optimize?

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

Confirmar: cuando indexa documentos a solr, ninguno de los cambios que está realizando aparecerá hasta que ejecute el command de confirmación. Por lo tanto, el momento de ejecutar el command de confirmación realmente depende de la velocidad a la que desee que aparezcan los cambios en su sitio a través del motor de búsqueda. Sin embargo, es una operación pesada, por lo que debe hacerse en lotes, no después de cada actualización.

Optimizar: Esto es similar a un command de desfragmentación en un disco duro. 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 nuevo documento para replace el eliminado. Optimize eliminará estos documentos eliminados. Puede ver el documento de búsqueda frente a la cantidad de documentos eliminados accediendo a la página Solr Statistics y mirando los numbers numDocs vs. maxDocs. La diferencia entre los dos numbers es la cantidad de documentos eliminados (no aptos para la búsqueda) en el índice.

También Optimize construye un índice NUEVO completo del antiguo y luego cambia al nuevo índice cuando se completa. Por lo tanto, el command 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 less de% 50 debido a los documentos eliminados)

Servidor de índice / server de búsqueda: Paul Brown tenía razón en que el mejor layout para solr es tener un server dedicado y sintonizado para la indexing, y luego replicar los cambios en los serveres de búsqueda. Puede ajustar el server de índice para tener múltiples puntos finales de índice.

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

Y dado que el server de índices no está buscando contenido, puede configurarlo con diferentes huellas de memory y commands de calentamiento de índices, etc.

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

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

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

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

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

3- Commit debe establecerse en "autoCommit" en el file solrconfig.xml, y allí debe ajustarse de acuerdo con sus necesidades.

La manera en que este tipo de cosas se hace generalmente es realizar operaciones de confirmación / optimization en un nodo Solr ubicado fuera de la ruta de request para sus usuarios. Esto requiere hardware adicional, pero asegura que la penalización del performance de las operaciones de indexing no afecte a sus usuarios. La replicación se usa para enviar periódicamente files de índice optimizados desde el nodo maestro a los nodos que realizan consultas de búsqueda para los usuarios.

Pruébalo primero. Sería realmente malo si evitara una solución simple y elegante solo porque usted lee que podría causar un problema de performance. En otras palabras, evite la optimization prematura .