2009-09-09 21 views
52

Necesitamos integrar un motor de búsqueda en nuestro software de gestión del Catálogo de productos. Se espera que el catálogo tenga más de 4-5 mn. registros con datos relacionales repartidos en varias tablas. Nuestra plataforma de desarrollo es Asp.Net 3.5 y hemos realizado un trabajo pre-liminar sobre Lucene, y descubrimos que es bueno. Sin embargo, acabamos de enterarnos de Solr y estábamos buscando algunos consejos prácticos para comparar Lucene & Solr desde la implementación, línea de tiempo, mantenimiento regular, rendimiento, perspectiva de las características. Cualquier orientación o consejos sería realmente útil. Gracias.Motor de búsqueda - Lucene o Solr

Respuesta

41

Lucene:

Apache Lucene es un alto rendimiento, biblioteca del motor de búsqueda de texto con todas las funciones escrito completamente en Java. Es una tecnología adecuada para casi cualquier aplicación que requiera la búsqueda de texto completo

Solr:

Solr es un servidor de búsqueda empresarial de código abierto basado en la biblioteca de búsqueda Lucene Java, con XML/HTTP y API JSON, destacando golpean, búsqueda por facetas, caching, replicación, un interfaz de administración web y ...

Esencialmente, Lucene está incrustado en Solr y es puramente una biblioteca de búsqueda de texto completo, con el propósito de ser incrustado en proyectos que les dan texto completo capacidades de búsqueda. Solr tiene muchas más características y capacidades de administración, lo que permite buscar datos estructurados sin necesidad de escribir ningún código personalizado, cargar datos de archivos CSV, análisis tolerante de la entrada del usuario, búsqueda facetada, resaltar el texto coincidente en los resultados y recuperar resultados de búsqueda en una variedad de formatos (XML, JSON, ...). Compruebe Solr features page y vea si alguna característica es relevante para su proyecto.

+0

He creado mis índices usando Lucene. ¿Solr aún pueden usar esos índices las consultas de búsqueda? – Vikram

+1

Como en la mayoría de los casos, depende. No es automático, debe asegurarse de que Solr tenga los mismos mapas que los que figuran en los índices de Lucene. Para obtener más información, consulte: http://www.nabble.com/Using-Lucene-index-in-Solr-td4983079.html – dcruz

+0

@dcruz, por casualidad, tiene alguna experiencia con DataImportHandler en Solr, que puede importar automáticamente datos de la base de datos basados ​​en algunos archivos de configuración. ¿Funciona tan bien como suena o hay algún truco escondido? – Vikram

1

Estamos exactamente en la misma situación que usted. Lamentablemente, no participé directamente en el proceso de evaluación, pero al final vamos a utilizar Solr integrado con Lucene.

La principal ventaja es la variedad de formatos que describe dcruz. De modo que puede consultar su Solr-Consumer y obtener el resultado de su búsqueda como datos XML que pueden analizarse fácilmente y mostrarse en la página web.

6

Como dcruz dice, Solr usa Lucene de todos modos, por lo que no es una comparación válida.

Lucene es un conjunto de herramientas para compilar aplicaciones de búsqueda, Solr es una aplicación de búsqueda creada con Lucene.

OMI que sería una locura no de usar Solr, ya que le proporciona una gran cantidad de 'cañerías' que tendría que escribir a sí mismo de otro modo - como una importación de datos configurable Handler para aspirar los datos de sus repositorios RDBMS o XML.

Además, le ofrece una interfaz de administrador web y otras características.

+0

he usado ambos (en asp.net), solr, es fácil de instalar y mantener.utilizando lucene.net, requerirá un poco más de esfuerzo.Por otro lado, si necesita algo que solr no ofrece de la caja (si no lo sabe java). – robasta

18

Tengo que estar de acuerdo con Andrew Clegg. Creo que cuando muchos desarrolladores de Java miran Lucene vs Solr, Lucene parece más amigable porque es solo una biblioteca (POJJ: Plain Old Java Jar!), Como cualquier otra biblioteca y parece sencillo de integrar, frente a la complejidad de de pie Solr arriba como un proceso separado que se comunica a través de HTTP complejo.

Sin embargo, creo que para casi todos los casos de uso de búsqueda, Solr es el enfoque correcto.Porque la mayor parte de la complejidad en la Búsqueda no es la integración inicial directa, sino las áreas borrosas de las búsquedas de ajuste, escala para satisfacer la demanda y mantener los índices que cruzan del mundo centrado en el desarrollador al mundo de los sistemas. Y Solr maneja todas esas necesidades muy bien.

+0

acaba de pedir su libro - Solr 1.4 Enterprise Search – Vikram

+0

¡Me alegra oírlo! Déjame saber cómo te gusta! –

+0

@Eric, mientras tanto, ¿me puedes posiblemente algún tipo de hoja de trucos para DataImportHandler que puede ser configurado para importar los datos de una base de datos del servidor SQL. – Vikram

1

Déjame cambiar un poco tu enfoque: ¿estás preparado para los cambios en la arquitectura de tu producto? Tanto Lucene como Solr están implementados en Java. Por lo tanto, terminará ejecutando otro contenedor web para alojarlo (y, por lo tanto, perderá la pureza de la plataforma, por así decirlo). Mientras Lucene fue portado a .NET (Lucene.NET project), Solr no fue tan lejos como yo sé. Si usa SQL Server (lo cual es probable, considerando su plataforma), podría considerar la búsqueda de texto completo de SQL Server: tiene casi las mismas características (no tan ricas en funciones como Lucene/Solr, pero de todos modos) y generalmente (en la mayoría de los casos) es mucho más fácil de incorporar a la aplicación existente. Además de eso, usted se beneficia de un mantenimiento simplificado (viene junto con su base de datos) y también se mantiene dentro de una plataforma única.

+6

SQL Server FTS está * camino * detrás de Lucene y Solr –

+2

No estaba diciendo que esté a la par. Pero el uso de SQL Server FTS le permitirá entregar la solución más rápido/más fácil y se mantendrá en los límites de la plataforma. Hace un tiempo nos enfrentamos a la misma opción: quedarse con SQL Server FTS o comenzar a usar Solr. Terminamos con Solr y es por eso que puedo comparar ambas funciones y el esfuerzo requerido para incorporarlas a su aplicación. Pero todos toman su propia decisión de todos modos. – AlexS

+0

@Alex, ¿usó DataImportHandler para configurar la importación de datos en Solr desde el servidor SQL? – Vikram

2

Una cosa a considerar es qué tan difícil será configurar su aplicación cuando mezcle estos dos entornos (Java/.NET). Si usa las bibliotecas de Lucene.NET, puede limitar sus instalaciones de dependencia externa requeridas, lo que agiliza la implementación.

Otra cosa a considerar es ¿necesita los extras que Solr está ofreciendo? Una interfaz de administrador web (otra) probablemente sea excelente, pero extiende su envolvente de riesgo. Establecer Java y otro servicio significa más administración de parches. Si se queda con .NET solo su estrategia de parche puede ser el modelo estándar de actualización de Windows.

Por supuesto, implementar su implementación con Lucene.NET tendrá costos de desarrollo y mantenimiento propios, pero en mi experiencia ha sido sencillo y fácil de usar.

Cuestiones relacionadas