Estoy interesado en ejecutar Lucene.NET para una aplicación que se ejecuta en clústeres de Windows. El problema de búsqueda en sí es razonablemente pequeño, pero el problema de apatrón/clúster aún debe ser manejado.Opciones para agrupamiento de Lucene.NET?
Entiendo que SOLR maneja mi escenario (y más) pero que requieren un contenedor de servlet (y Java) me plantea algunos problemas. Dependiendo de la complejidad de un enfoque basado en Lucene.NET, aún así puede ser una opción de vial.
Mi pregunta ahora es qué opciones tengo para manejar el problema de que se ejecuta en múltiples hosts:
Persistir en un almacenamiento compartido, común para todos los nodos? ¿Lucene.NET manejaría la concurrencia de forma transparente? ¿Los servidores usarían RAM para el almacenamiento en caché, y si es así, Lucene.NET manejaría la invalidación de esto basándose en archivos actualizados de forma transparente?
¿Replicación? Cada servidor tiene su propia copia de todo lo que necesita. En cualquier actualización, todos los servidores obtienen una nueva réplica (o diff si esto es razonablemente simple). ¿Las herramientas existentes para esto, o depende de mí para manejarlas?
Partición de la carga de trabajo/fragmentación? Cada servidor maneja solo sus propios datos, tanto para lecturas como para actualizaciones. Herramientas para manejar esto, unir resultados parciales, etc.
¿Me han perdido otras opciones en mi investigación inicial?
Al experimentar con una versión local, mi directorio Lucene estaba en el orden de un par de cientos de megas. A más largo plazo, puedo ver 1-5 GB, tal vez. Si la frecuencia de las actualizaciones es una dificultad, puedo controlar esto con bastante flexibilidad. Se espera que las cargas concurrentes de lectura/búsqueda sean muy moderadas.
No es una respuesta directa, pero eche un vistazo a elasticsearch (http://www.elasticsearch.org/) - maneja la mayoría de sus necesidades con bastante facilidad. – Mikos
¿Qué requisitos, si existen, tiene para mantener sus datos sincronizados entre los miembros del clúster? Estamos en medio de una implementación de clúster de escala bastante grande de Lucene.NET y es posible que pueda proporcionar alguna orientación si entendí mejor su situación. –