2011-12-09 16 views
6

he visto muchas preguntas (y respuestas buenas) que comparan la escalabilidad, velocidad, y escenarios de despliegue para elasticsearch y Solr, pero me parece que no puede encontrar buena información sobre las diferencias o las fortalezas relativas de cómo las consultas pueden funcionar con los datos indexados.elasticsearch vs Solr respecto a la estructura de datos/consulta cuenta con

Específicamente, estoy interesado en las diferencias entre elasticsearch y Solr en las siguientes áreas:

  1. capacidades de facetado: cómo hacer su manejo de las facetas son diferentes, o son básicamente los mismos?

  2. manejo esquema: Parece que tiene un borde elasticsearch flexibilidad en los esquemas que se puede definir sobre la marcha a través de la API de descanso, mientras que Solr les obliga a ser pre-definido en schemas.xml (no he visto confirmación específica de esta diferencia, sin embargo). ¿Existen diferencias sustantivas en cómo se usan los esquemas más allá de eso?

  3. filtros de indexación: ¿Hay diferencias entre cómo se pueden optimizar los datos para búsquedas específicas? p.ej. Yo he visto mención de cosas como la duplicación de campo y los filtros de consulta para la tokenización Solr que añadir a personalización del algoritmo de búsqueda, pero no he visto mucha información del mismo tipo con respecto elasticsearch, pero tal vez sólo se ocupa de todas estas cosas de forma automática?

  4. consulta expresividad: son los DSL consulta básicamente igual de expresivo como los demás, o hay diferencias fundamentales?

  5. "boost" y/o personalización de resultados: ¿qué servicios hay para la codificación o el masaje de los resultados de búsqueda algorítmicos?

Una vez más, tenga en cuenta que no estoy en absoluto interesado en cuestiones de velocidad/scalbility/performace, sólo la expresividad del lenguaje de estructuración de datos de búsqueda y consulta - Posiblemente toda esta cuestión se podría resumir en: ¿Hay alguna búsqueda que pueda realizar o una estructura de datos que pueda crear en elasticsearch que no pueda replicar en Solr, o viceversa?

Respuesta

7
  1. facetado es casi el mismo, excepto que ES permite también a través de scripts dinámicos y Solr permite paginación faceta. También en Solr hay un esquema de facetado conveniente para hacer facetas de estilo de búsqueda de tienda simple (nota: también es relativamente fácil con ES pero no de fábrica). La facetación ES puede ser más poderosa ya que no hay necesidad de unir facetas a la filtración.

  2. para ES esquema se pueden actualizar a través de la API! o definir en un archivo y se especifica un tipo . Solr para crear un archivo de configuración por índice de. Por cierto: con los campos dinámicos tienes un esquema menos restrictivo para Solr.

  3. ES pierde solamente la función de autowarming (pero esto es lo que no relacionados con el rendimiento interesante para usted;)) y el grupo de función. De lo contrario, ambos usan material lucene similar. ES permite muchas combinaciones avanzadas como es posible en lucene. El elemento secundario parental es similar al grupo por elemento y no se implementa en Solr IMO.

  4. La consulta estándar para ES está formulada a través de JSON, por lo que puede crear casi todo lo que pueda crear a través de lucene. En Solr puedes hacer muchas cosas avanzadas, pero a menudo necesitas algún conocimiento fundamental de Solr, como params locales, etc. Echa un vistazo a este nice discussion.

  5. No entender esto :)

hay una búsqueda que puedo realizar o una estructura de datos que puede crear en elasticsearch que no puede replicarse en Solr, o viceversa?

En ES existe la característica de percolador que probablemente sea más difícil de implementar con Solr. En ES, también tiene la función de control de versiones para implementar el bloqueo optimista, tiene alias de índice y una consulta de exploración para navegar profundamente por su índice, no estoy seguro si Solr tiene características similares. P.ej. el aliasing ayuda a hacer un relativo rolling index implementation..

+0

re # 5: Leí en alguna parte que en Solr puedes hacer un análisis final del algoritmo de búsqueda, es decir, puedes "arreglar" los resultados de búsqueda sin cambiar el término ponderación. Entonces, por ejemplo, podría decir que desea que un determinado documento sea el primer resultado siempre que la consulta contenga un término específico, aunque el algoritmo de búsqueda normalmente no devolvería ese documento. Sin embargo, nunca encontré información sobre cómo lograrlo. –

+0

hmmh, no estoy seguro de eso. Pero el aumento en general puede hacerse al indexar y consultar. ¿Quieres decir esto? Ver p. esta última entrada en la discusión de ES: http://groups.google.com/group/elasticsearch/browse_thread/thread/f9d0ebdd0225243c# – Karussell

+1

y aquí hay un doc de solr http://wiki.apache.org/solr/FunctionQuery por cierto: en ES la funcionalidad de scripting es más avanzada IMO para impulsar: http://www.elasticsearch.org/guide/reference/query-dsl/custom-score-query.html – Karussell

Cuestiones relacionadas