2010-05-18 19 views
18

Existen varias ventajas para usar Solr 1.4 (búsqueda de facetas fuera de la caja, agrupación, replicación, administración http frente a luke, ...).Situaciones para preferir Apache Lucene sobre Solr?

Incluso si incorporo una funcionalidad de búsqueda en mi aplicación Java podría usar SolrJ para evitar el intercambio de HTTP cuando se utiliza Solr. ¿Se recomienda SolrJ en absoluto?

Entonces, ¿cuándo recomendarías usar "pure-Lucene"? ¿Tiene un mejor rendimiento o requiere menos RAM? ¿Es mejor que se pueda probar por unidad?

PD: Estoy al tanto de this question.

+1

aquí hay otras 'comparaciones' http://www.lucenetutorial.com/lucene-vs-solr.html y http://www.lucidimagination.com/solutions/software/choosing-lucene-solr – Karussell

+0

tienen otro aspecto en http://www.findbestopensource.com/article-detail/lucene-vs-solr – Karussell

Respuesta

4

Si desea integrar por completo su funcionalidad de búsqueda dentro de su aplicación y no desea mantener un proceso separado como Solr, probablemente sea preferible utilizar Lucene. Por ejemplo, una aplicación de escritorio puede necesitar alguna funcionalidad de búsqueda (como el IDE de Eclipse que usa Lucene para buscar su documentación). Probablemente no desee que este tipo de aplicación inicie un proceso pesado como Solr.

+0

¿Qué quiere decir con heavy? En términos de CPU/RAM o el mantenimiento de cosas? – Karussell

+0

En términos de recursos físicos, sí. Y está el tiempo de inicio de Solr que probablemente sería inaceptable en una aplicación de escritorio. –

+1

Pero nunca experimento con EmbeddedSolrServer. Podría ser una forma interesante de insertar Solr. –

6

Si tiene una aplicación web, use Solr. Intenté integrar ambas, y Solr es más fácil. De lo contrario, si no necesita las características de Solr (la que le viene a la mente como la más importante es la búsqueda con facetas), use Lucene.

+0

¿Utilizaste el enfoque SolrJ o HTTP? Traté de incrustar lucene en una aplicación web y fue bastante fácil. – Karussell

+0

Utilicé Solrj, por lo que no tuve que realizar solicitudes HTTP desde la aplicación. Honestamente, no puedo recordar lo que lo hizo difícil, así que tal vez estaba haciendo algo tonto en alguna parte. –

+0

Gracias por la respuesta.¿Qué ocurre con las pruebas unitarias? ¿Es fácil configurar un RAMDirectory como lo puedo hacer con lucene? – Karussell

2

Aquí hay una situación en la que tengo que usar Lucene.

Dado un conjunto de documentos, descubra los términos más comunes en ellos.

Aquí, necesito acceder a los vectores de términos de cada documento (usando las API de bajo nivel de TermVectorMapper). Con Lucene es bastante fácil.

Otro caso de uso es para pedidos muy especializados de resultados de búsqueda. Por ejemplo, quiero una búsqueda de un nombre de autor (que haya escrito varios libros) para que resulte en un libro de cada tienda en los primeros 10 resultados. En este caso, encontraré los resultados de cada librería y para mostrar los resultados finales elegiré un resultado de cada librería. Aquí básicamente haces múltiples búsquedas para generar resultados finales. Tener acceso a API de bajo nivel de lucene definitivamente ayuda.

Una razón más para ir por Lucene era conseguir nuevas golosinas CUANTO ANTES. Esto ya no es cierto ya que ambos se han fusionado y habrá versiones sincrónicas.

+0

Acerca de TermVectorMapper -> ¿Sabes si es posible con Solr? Con respecto al ejemplo de orden de búsqueda: no se pudo hacer esto con la función de agrupamiento de Solr: http://blog.jteam.nl/2009/10/20/result-grouping-field-collapsing-with-solr/ – Karussell

+0

TVMapper es el núcleo a Lucene. ¿Por qué ir a través de una capa adicional cuando se puede leer directamente de la fuente? Y no estoy exactamente buscando agrupar. Quiero todos los resultados de cada una de las librerías, pero quiero que el orden sea una aproximación cercana de round-robin con algunos criterios adicionales. –

2

Me sorprende que nadie haya mencionado la búsqueda NRT - Near Real Time, disponible con Lucene, pero no con Solr (todavía).

+0

realmente? aquí está el enlace http://wiki.apache.org/lucene-java/NearRealtimeSearch ... pensé que también estaba disponible para solr – Karussell

+0

@Kussell: ver https://issues.apache.org/jira/browse/SOLR -1606 –

+0

Gracias Mauricio! – Karussell

0

Utilice Solr si le preocupa más la escalabilidad que el rendimiento y utilice Lucene si le preocupa más el rendimiento que la escalabilidad.

+0

Esta pregunta tiene 4 años por cierto ... ¡mira en ElasticSearch! – Karussell

Cuestiones relacionadas