empecé a trabajar en un proyecto que requiere la búsqueda de texto completo en Ruby por lo que, naturalmente, empecé con Solr + de manchas solares, pero no podía haz que funcione Fue un dolor solo conectarlos, luego intenté averiguar si el documento estaba indexado correctamente, averiguar el classpath de tiempo de ejecución para poder agregar clases adicionales de analizador/tokenizer, editar config.xml/schema.xml, etc. Solr numDocs claramente dijo que los recibió e indexó pero no pude obtener ningún resultado de consulta. Me rendí después de un par de días, fue una especie de infierno de configuración.
ElasticSearch + Tire fue muy fácil de poner en marcha, lo conseguí trabajando en una hora.
Lucene es solo una biblioteca de búsqueda Java, por lo tanto Solr fue desarrollada para ser una aplicación de búsqueda de servicio completo, pero Solr todavía tiene toda la trampa de una aplicación de Java típica: configuraciones XML excesivamente complicadas, especulativas, esperan documentos XML para indexación, requiere un contenedor de servlets de Java (Jetty o Tomcat), que se convierten en demasiados puntos de falla para mí.
ElasticSearch está basado en Lucene también, tiene un contenedor de servlets incorporado, así que simplemente ejecute como un daemon, use una API JSON + REST muy directa, por lo que es ideal para pruebas y un ajuste más natural para Ruby. Es sin esquema y funcionó para mí sin siquiera editar un archivo de configuración. Todo funcionó maravillosamente.
Lo que realmente necesitaba era la búsqueda en chino y ElasticSearch ya incluía el SmartChineseAnalyzer de Luecene como complemento. No estoy seguro de lo difícil que será personalizar la cadena del analizador/tokenizador si necesita ese nivel de personalización. La documentación para ElasticSearch y Tire son de primera categoría.
neumáticos (librería Ruby para Elasticsearch)
https://github.com/karmi/tire
Usted puede probar la demo, que va a instalar un searchApp rieles, descargue el Elasticsearch binario y lo dirige, a continuación, iniciar WEBrick automáticamente.
$ rails new searchapp -m https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
En mi sistema se quejaron de no tener un motor de Javascript (Rails 3.2 ya no incluye thereubyracer joya por defecto?), Así que tuve que:
$ wget https://raw.github.com/karmi/tire/master/examples/rails-application-template.rb
$ nano rails-application-template.rb
añadir joya 'therubyracer' en el ARCHIVO (buscar joya 'de neumáticos' y joya 'will_paginate'), entonces ...
$ rails new searchapp -m rails-application-template.rb
para el desarrollo de mi propia aplicación, sólo downladed el archivo tar Elasticsearch y se ejecutan en el primer plano con el modificador -f (por lo Puedo fácilmente st op por Ctrl-C)
$ bin/elasticsearch -f
Puede instalar el plugin eleasticsearch-cabeza para conseguir una interfaz de administración web
https://github.com/mobz/elasticsearch-head
También algo que descubrí: si tiene de uno a En muchos modelos de relaciones, Tire no los resolverá en los resultados de búsqueda, solo devuelve una colección plana. Sus relaciones has_many y belongs_to solo serán identificadores de objetos en la colección en lugar de objetos completos.
Solr es una capa de servicio encima de Lucene. Solo depende de cómo quieras diseñar. –
Una pregunta de comparación más adecuada sería Solr vs ElasticSearch, o Sunspot vs Tire. –