¿Cuándo usar SOLR sobre Lucene en una versión de Sitecore 7?


Mi cliente no tiene el presupuesto para configurar y mantener un servidor SOLR para usar en su entorno de producción. Si entiendo correctamente la API de búsqueda de contenido de Sitecore 7, no es gran cosa configurar las cosas para usar Lucene en su lugar. En su mayor parte, la configuración será similar y el código será el mismo, y un servidor SOLR se puede intercambiar más tarde.

La compilación del sitio tiene

  • página de búsqueda facetada
  • listado de componentes en landing y en otras páginas eso aprovechará la API de búsqueda de contenido
  • cubos con facetas personalizadas

El sitio tiene alrededor de 5,000 páginas y componentes sin incluir elementos de la biblioteca de medios. ¿Hay alguna preocupación sobre el simple uso de Lucene?

La pregunta principal es, ¿cuándo, durante su fase de arquitectura o diseño, sabe que definitivamente debe elegir SOLR sobre Lucene? ¿Cuáles son las principales señales que llevan a recomendar eso?

Author: Patrick Jones, 2014-03-21

3 answers

Creo que si usted está tratando con un cliente con un presupuesto limitado, entonces Lucene funcionará perfectamente bien y funcionará de manera excelente para la escala de las cosas que está haciendo. Todas las cosas que usted menciona están totalmente respaldadas por la implementación en Lucene.

En un escenario de Sitecore comenzaría a considerar Solr si:

  • Es necesario indexar un gran número de elementos-id decir 50 mil hacia arriba-Lucene está contento con este tipo de número, pero Solr ha mejorado el almacenamiento en caché de consultas y es diseñado para este gran número de artículos.
  • La resiliencia del nivel de búsqueda es de máxima importancia para el negocio (es decir, el sitio es puramente impulsado por la búsqueda): Solr proporciona un sistema de replicación/fragmentación y conmutación por error más robusto con SolrCloud.
  • La reutilización del nivel de búsqueda en otras aplicaciones es importante (no Sitecore): Solr es una aplicación de búsqueda, por lo que se puede acceder a ella a través de HTTP con XML/JSON, etc., lo que facilita la integración con sistemas externos.
  • Necesitas algo característica adicional específica de Solr que Lucene no tiene.

.. pero como dices si quieres cambiar Lucene por Solr en una fase posterior, hemos trabajado duro para asegurarnos de que el proceso sea lo más simple posible. Vale la pena señalar algunos puntos aquí:

  • Si bien sus consultas LINQ permanecerán igual, su configuración será ligeramente diferente y necesitará atención al puerto a través.
  • La comprensión de cómo funciona Solr como una aplicación y cómo funciona el esquema es importante de saber, pero hay algunos grandes libros y una gran cantidad de conocimiento por ahí.
  • Solr tiene analizadores y mecanismos de puntuación ligeramente diferentes (más nuevos), por lo que sus resultados de búsqueda pueden ser ligeramente diferentes (a veces los clientes pueden alarmarse por esto: P)

.. pero creo que estas son cosas que se pueden construir con el tiempo y evaluar con el cliente. Estoy seguro de que hay más puntos aquí y otros pueden intervenir si piensan en ellos. Espero que esto ayude:)

 32
Author: Stephen Pope,
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
2014-03-21 09:10:10

Stephen prácticamente cubrió la pregunta, pero solo quería agregar otro escenario. Debe tener en cuenta la configuración del servidor en su entorno de producción. Si va a usar varios servidores de entrega de contenido detrás de un equilibrador de carga, consideraría Solr desde el principio, ya que intentar asegurarse de que el índice de Lucene en cada servidor de entrega esté sincronizado el 100% del tiempo puede ser doloroso.

 13
Author: Richard Seal,
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
2014-03-21 16:31:33

Yo recomendaría planear un plan de escape de Lucene tan pronto como empieces a pensar en múltiples CDs y aquí está la razón:

A) Cada servidor tiene que mantener su propia copia de índice:

  1. Cualquier reinicio inesperado puede hacer que algunos documentos no se agreguen al índice en el cuadro uno, lo que hace que los índices sean diferentes de un servidor a otro. Eso llevaría a la misma página mostrando diferente por CDs
  2. Cada servidor debe realizar actualizaciones de índice-utilice la tasa de respuesta del & espacio en disco; de la CPU drops after publish operation is over = /
  3. De acuerdo con la guía de seguridad, los CD deben tener la interfaz de usuario de Shell de Sitecore eliminada, por lo que el índice no se puede reconstruir fácilmente desde Panel de control = \

B) Lucene no está diseñado para grandes volúmenes de contenido. Cada operación de búsqueda hace aproximadamente lo siguiente:

  1. Crear una matriz con tamaño igual al número total de documentos en el índice
  2. Si el documento coincide con la búsqueda, establezca flag en el array

Mientras que esto funciona como un encanto para índices de bajo tamaño (~10K elementos), se produce una gran degradación del rendimiento una vez que crece el volumen de contenido.

El array asignado termina en Gran Montón de objetos que no está compactado por defecto, por lo tanto se fragmenta rápidamente.

Escenario:

  1. Realice la búsqueda de documentos de 100K - > enorme matriz creada en memoria

  2. Realizar una búsqueda más en otro hilo -> una matriz más enorme creado

  3. Índice de actualización - > ahora 100K + 10 documentos

  4. La primera operación fue completada; LOH tiene espacio para array de 100K

  5. Seach activado de nuevo - > 100K + 10 array se va a crear; la memoria liberada 'agujero' no es lo suficientemente grande, por lo que se solicita más RAM.

  6. w3wp.el proceso exe sigue consumiendo más y más RAM

Este es el caso común para la agregación de Analytics, ya que un índice se rellena con varios subprocesos a la vez. Verás una gran cantidad de RAM utilizada después de un tiempo en el procesamiento instancia.

C) Último Lucene.NET release se realizó hace 5 años.

Mientras que SOLR se está desarrollando activamente.

Cuanto antes hagas el cambio a SOLR, más fácil será.

 0
Author: Nikolay Mitikov,
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
2017-12-21 05:32:32