He leído lo siguiente:SOLR la optimización del rendimiento
http://wiki.apache.org/solr/SolrPerformanceFactors
http://wiki.apache.org/solr/SolrCaching
http://www.lucidimagination.com/content/scaling-lucene-and-solr
Y tengo preguntas acerca de algunas cosas:
- Si uso la opción de JVM
-XX:+UseCompressedStrings
qué tipo de Ahorro de memoria ¿puedo lograrlo? Para mantener un ejemplo simple, si tengo 1 campo indexado (cadena) y 1 campo almacenado (cadena) con omitNorms = true y omitTf = true, ¿qué tipo de ahorros puedo esperar en el índice y en el caché de documentos? Supongo aproximadamente el 50%, pero tal vez eso sea demasiado optimista. - ¿Cuándo exactamente está haciendo el caché del filtro Solr? Si solo estoy haciendo una consulta simple con AND y unas pocas RUP, y ordenando por puntaje, ¿la necesito?
- Si quiero almacenar en caché todos los documentos en el caché del documento, ¿cómo calculo el espacio requerido? Usando el ejemplo de arriba, si tengo documentos de 20M, uso cuerdas comprimidas, y la longitud promedio del campo almacenado es de 25 caracteres, ¿el espacio requerido es básicamente (25 bytes + small_admin_overhead) * 20M?
- si todos los documentos están en el caché de documentos, ¿qué importancia tiene el caché de consultas?
- Si quiero autocalentar cada documento en la memoria caché del documento, la consulta automática de
*:*
lo hará? - El artículo scaling-lucene-and-solr dice que FuzzyQuery es lento. Si estoy usando la función de corrección ortográfica de Solr, básicamente estoy usando la consulta difusa a la derecha (porque el corrector ortográfico hace el mismo cálculo de distancia de edición). ¿Entonces, presumiblemente, la revisión ortográfica y la consulta difusa son igualmente "lentas"?
- La sección que describe el caché de campo lucene para cadenas es un poco confuso. ¿Lo estoy leyendo correctamente que el espacio requerido es básicamente el tamaño del campo de cadena indexado + un número entero arry igual al número de términos únicos en ese campo?
- Finalmente, al maximizar el rendimiento, hay una declaración sobre dejar suficiente espacio para la memoria caché de disco del sistema operativo. Dice: "En general, para un índice a gran escala, es mejor asegurarse de tener al menos unos pocos gigabytes de RAM más allá de lo que le está dando a la JVM". Entonces, si tengo una máquina de memoria de 12GB (como ejemplo), ¿debería dar al menos 2-3GB al sistema operativo? ¿Puedo estimar el espacio de caché de disco que necesita el sistema operativo mirando el tamaño del índice del disco?
¿Por qué los votos para cerrar? – Kevin
Ambas respuestas fueron buenas, así que elegí la que salió primero como correcta. Gracias por las respuestas – Kevin