Elegir un servidor de búsqueda de texto completo independiente: ¿Sphinx o SOLR? [cerrado]

192

Estoy buscando un servidor de búsqueda de texto completo independiente con las siguientes propiedades:

  • Debe funcionar como un servidor independiente que puede atender solicitudes de búsqueda de múltiples clientes
  • Debe poder realizar una "indexación masiva" indexando el resultado de una consulta SQL: diga "SELECCIONAR ID, text_to_index FROM documentos;"
  • Debe ser software libre y debe ejecutarse en Linux con MySQL como base de datos
  • Debe ser rápido (descarta la búsqueda interna de texto completo de MySQL)

Las alternativas que he encontrado que tienen estas propiedades son:

  • Solr (basado en Lucene)
  • ElasticSearch (también basado en Lucene)
  • Esfinge

Mis preguntas:

  • ¿Cómo se comparan?
  • ¿Me he perdido alguna alternativa?
  • Sé que cada caso de uso es diferente, pero ¿hay ciertos casos en los que definitivamente no quisiera usar un paquete determinado?
knorv
fuente
1
¿Has descartado el uso de Lucene heterosexual? Solr es un servicio en la cima de lucene, por lo que la posibilidad de Lucene podría ser directa.
Dave
¿Lucene tiene un modo de servidor independiente? ¿Pensé que esa era una de las cosas que agregó SOLR? No he descartado nada - así que siéntete libre para abogar Lucene si esa es la mejor opción teniendo en cuenta los requisitos :-)
knorv
mausch: Principalmente Java pero también otros lenguajes.
knorv
Personalmente me gusta Sphinx. Sin embargo, durante un proyecto "grande" recientemente, el último candidato de la versión (0.9.9-rc2) mostró errores de detención al usar matrices de valores múltiples (MVA). ¡Sería resultados aleatorios! Así que nos mudamos a SOLR para evitar esto. Una vez que SOLR estuvo en funcionamiento, el rendimiento estuvo bien y sin el error show stopper.
pchap10k
2
¿Has mirado en elasticsearch.com?
FYA

Respuestas:

327

He estado usando Solr con éxito durante casi 2 años, y nunca he usado Sphinx, por lo que obviamente soy parcial. Sin embargo, intentaré mantenerlo objetivo citando los documentos u otras personas. También tomaré parches para mi respuesta :-)

Similitudes:

  • Tanto Solr como Sphinx satisfacen todos sus requisitos. Son rápidos y están diseñados para indexar y buscar grandes cantidades de datos de manera eficiente.
  • Ambos tienen una larga lista de sitios de alto tráfico que los usan ( Solr , Sphinx )
  • Ambos ofrecen soporte comercial. ( Solr , Esfinge )
  • Ambos ofrecen enlaces de API de cliente para varias plataformas / idiomas ( Sphinx , Solr )
  • Ambos se pueden distribuir para aumentar la velocidad y la capacidad ( Sphinx , Solr )

Aquí hay algunas diferencias:

Preguntas relacionadas:

Mauricio Scheffer
fuente
44
Hablando de que los desarrolladores se comprometen con Solr y Lucene, parece que han fusionado los dos productos para que el desarrollo posterior sea más fácil y rápido: lucidimagination.com/blog/2010/03/26/… .
jimmystormig
3
@Stann: ¿cómo es eso? Utilicé Solr hace casi 5 años y nunca tuve que escribir una sola línea de Java.
Mauricio Scheffer
@MauricioScheffer ¿Realmente crees que el código Java será más rápido que C ++? Aquí está la comparación hecha por Bill Karwin y Sphinx que consulta cosas 10 veces más rápido que lucene (y solr tiene que ser incluso más lento que). Slideshare.net/billkarwin/…
Stann
3
@Stann: ¿realmente crees que necesitas más rendimiento que whitehouse.gov, Netflix, The Guardian, digg, solo por nombrar algunos sitios web que usan Solr? wiki.apache.org/solr/PublicServers
Mauricio Scheffer
3
Aquí hay una respuesta en Sphinx que es un buen par para esta respuesta en Solr
Nueva Alejandría
48

A menos que necesite ampliar la funcionalidad de búsqueda de cualquier forma patentada, Sphinx es su mejor opción.

Ventajas de la esfinge:

  1. El desarrollo y la configuración son más rápidos.
  2. Agregación mucho mejor (y más rápida). Esta fue la característica asesina para nosotros.
  3. No XML Esto es lo que finalmente descartó a Solr para nosotros. Tuvimos que devolver conjuntos de resultados bastante grandes (piense en cientos de resultados) y luego agregarlos nosotros mismos ya que faltaba la agregación de Solr. La cantidad de tiempo para serializar hacia y desde XML simplemente mató el rendimiento. Sin embargo, para pequeños conjuntos de resultados, estaba perfectamente bien.
  4. La mejor documentación que he visto en una aplicación de código abierto

Ventajas de Solr:

  1. Puede ser extendido.
  2. Puede golpearlo directamente desde una aplicación web, es decir, puede hacer que las búsquedas de tipo autocompletado lleguen al servidor Solr directamente a través de AJAX.
larf311
fuente
29
Solr tiene muchos escritores de respuestas distintos de xml, incluidos JSON, PHP, Ruby, Python y un formato binario java: lucene.apache.org/solr/api/org/apache/solr/request/…
Mauricio Scheffer
24
¿Mencioné lo terrible que es la documentación de Solr / Lucene? Tener que rootear Javadocs para descubrir la funcionalidad no es mi idea de documentación.
larf311
3
Debería haber vinculado a la wiki: wiki.apache.org/solr/…
Mauricio Scheffer
2
Paso todo el día arreglando algunos errores de instalación de sphinx 0.9.9 en mi mac. Hasta ahora todavía no funciona. Es muy buggy. Usé muchas formas sugeridas. Estoy renunciando Realmente frustrante ...
lkahtz
La documentación de solr no es tan buena como la esfinge. Pero la comunidad es grande. Y siempre puedo resolver todo leyendo el código fuente de solr.
Tyler Long
21

Nota: Hay muchos usuarios con la misma pregunta en mente.

Entonces, para responder al punto:

¿Cuál y por qué?

  • Use Solr si tiene la intención de usarlo en su aplicación web (motor de búsqueda de sitios de ejemplo). Definitivamente resultará genial, gracias a su API. Definitivamente necesitará ese poder para una aplicación web.

  • Use Sphinx si desea buscar toneladas de documentos / archivos muy rápido. También indexa muy rápido. Recomendaría no usarlo en una aplicación que incluya JSON o analizar XML para obtener los resultados de búsqueda. Úselo para búsquedas directas de dB. Funciona muy bien en MySQL.

Alternativas

Aunque estos son los gigantes, hay muchos más. Además, hay quienes los utilizan para potenciar sus marcos personalizados. Entonces, diría que realmente no te has perdido ninguno. Aunque hay una búsqueda elástica que tiene una buena base de usuarios.

Augiwan
fuente
13
ese momento incómodo cuando leí esta respuesta después de un año y medio y hago clic en votar a favor y veo que escribí esta respuesta yo mismo. jajaja : Sin embargo, una pequeña adición a esto: después de 18 meses, Elasticsearch ha resultado ser una gran alternativa y también tiene una comunidad decente. Genial, bonsai genial!
Augiwan
¡Augusto! Ese momento incómodo: D. Entonces, para una aplicación web de Python, ¿qué crees que es mejor ahora? ¿Búsqueda simple o elástica basada en el rendimiento, el uso de memoria y la facilidad para configurar alguna idea?
Mevin Babu
No importa en qué idioma esté escrita la aplicación web. ¡Elija según su caso de uso!
Augiwan
19

He estado usando Sphinx durante casi un año y ha sido increíble. Puedo indexar 1,5 millones de documentos en aproximadamente un minuto en mi MacBook, e incluso más rápido en el servidor. También estoy usando Sphinx para limitar las búsquedas a lugares dentro de latitudes y longitudes específicas, y es muy rápido. Además, cómo se clasifican los resultados es muy modificable. Fácil de instalar y configurar, si lees uno o dos tutoriales. Casi el estado 1.0, pero sus candidatos de lanzamiento han sido sólidos como una roca.

lo_fye
fuente
3
La búsqueda geográfica se puede hacer en Solr con el complemento LocalSolr
Mauricio Scheffer
1
puede INDEXAR 1.5 millones de documentos en un minuto? ¡Ni siquiera puedo acercarme a LEER tantos, directamente desde archivos 7zip (no escribir, enviar a la consola) en mi SSD! ¡Y es 2017! ¿Qué tipo de documentos son estos? Eso es bastante increible. Nota: Espero que no haya querido buscar el índice de 1,5 millones en un minuto. Las búsquedas de un índice con 1.5 millones de documentos aún deberían regresar en segundos (incluso en 2009).
FastAl
2

Lucene / Solr parece ser más destacado y con años más largos en el negocio y una comunidad de usuarios mucho más fuerte. En mi humilde opinión, si puedes superar los problemas de configuración inicial, ya que algunos parecen haber enfrentado (no nosotros), entonces diría que Lucene / Solr es tu mejor opción.

Angsuman Chakraborty
fuente
La comunidad de usuarios es un punto importante. Hay un par de personas MUY, MUY útiles en los foros de Sphinx, pero de lo contrario no hay una comunidad fuerte.
mlissner