mysql full-text-search lucene solr sphinx

mysql - Elección de un servidor de búsqueda de texto completo independiente: Sphinx o SOLR?



full-text-search lucene (5)

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 "SELECT id, text_to_index FROM documents;"
  • 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?

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 es más rápido
  2. Mucho mejor (y más rápido) de agregación. Esta fue la característica asesina para nosotros.
  3. No XML. Esto es lo que finalmente descartó 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 desde y hacia XML simplemente mató el rendimiento. Para pequeños conjuntos de resultados, sin embargo, 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 acceder directamente desde una aplicación web, es decir, puede hacer que las búsquedas autocompletadas lleguen al servidor Solr directamente a través de AJAX.

He estado usando Solr con éxito durante casi 2 años, y nunca he usado Sphinx, así que obviamente estoy sesgado. Sin embargo, intentaré mantener el objetivo citando los documentos u otras personas. También llevaré parches a mi respuesta :-)

Similitudes:

  • Tanto Solr como Sphinx satisfacen todos tus requisitos. Son rápidos y están diseñados para indexar y buscar grandes cuerpos 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 , Sphinx )
  • 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:


He estado usando Sphinx por 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, la forma en que 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.


Lucene / Solr parece ser más destacado y con más años en el negocio y una comunidad de usuarios mucho más sólida. Si puedo superar los problemas de configuración inicial, ya que algunos parecen haberse enfrentado (no nosotros), diría que Lucene / Solr es su mejor apuesta.


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

Entonces, para responder al punto:

Cual y por que

  • Use Solr si pretende usarlo en su aplicación web (motor de búsqueda de sitios de ejemplo). Definitivamente se volverá genial gracias a su API. Definitivamente necesitarás ese poder para una aplicación web.

  • Utilice Sphinx si desea buscar a través de toneladas de documentos / archivos realmente rápido. Se indexa muy rápido también. Recomendaría no usarlo en una aplicación que implique JSON o análisis de XML para obtener los resultados de búsqueda. Úsalo para búsquedas directas de dB. Funciona muy bien en MySQL.

Alternativas

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