rails gema formularios form for busquedas anidados ruby-on-rails full-text-search

ruby-on-rails - gema - rails forms select



¿Cómo hago una búsqueda de texto completo en Ruby on Rails? (7)

Me gustaría hacer una búsqueda de datos en texto completo en mi aplicación Ruby on Rails. ¿Qué opciones existen?


Puedo recomendar Sphinx. Ryan Bates tiene un excelente screencast sobre el uso del plugin Thinking Sphinx para crear una solución de búsqueda de texto completo.


Depende de qué base de datos esté utilizando. Yo recomendaría usar Solr ya que ofrece muchas opciones agradables. El inconveniente es que debes ejecutar un proceso separado para ello. También he usado Ferret, pero me pareció menos estable en cuanto al acceso de múltiples subprocesos al índice. No he probado Sphinx porque solo funciona con MySQL y Postgres.


Solo una nota para futuras referencias: Ultra Sphinx ya no se mantiene. Pensando en la esfinge es su reemplazo. A pesar de que carece de varias características en este momento, como el extracto de Ultra sphinx, lo compensa en otras características.


Recomendaría acts_as_ferret ya que lo estoy usando para el proyecto Scrumpad en el trabajo. La indexación se puede realizar como un proceso separado que garantiza que, aunque vuelva a indexar, aún podamos usar nuestra aplicación. Esto puede reducir el tiempo de inactividad del sitio web. También la búsqueda es mucho más rápida. Puede buscar a través de modelos múltiples a la vez y ordenar los resultados por los campos que prefiera.


Puedes usar Ferret (que es Lucene escrito en Ruby). Se integra sin problemas con Rails utilizando la combinación de act_as_ferret. Eche un vistazo a " Cómo integrar hurón con rieles ". Una alternativa es Sphinx .



Hay varias opciones disponibles y cada una tiene diferentes fortalezas y debilidades. Si desea agregar la búsqueda de texto completo, sería prudente investigar cada una un poco y probarlas para ver qué tan bien funciona para usted en su entorno.

MySQL tiene soporte incorporado para la búsqueda de texto completo. Tiene soporte en línea, lo que significa que cuando se agregan nuevos registros a la base de datos, se indexan automáticamente y estarán disponibles en los resultados de búsqueda. La documentación tiene más detalles.

acts_as_tsearch ofrece un contenedor para funcionalidad incorporada similar para las versiones recientes de PostgreSQL

Para otras bases de datos, deberá usar otro software.

Lucene es un proveedor de búsqueda popular escrito en Java. Puede usar Lucene a través de su servidor de búsqueda Solr con Rails usando acts_as_solr .

Si no quiere usar Java, hay un puerto de Lucene a Ruby llamado Ferret . Soporte para Rails se agrega usando el plugin acts_as_ferret .

Xapian es otra buena opción y es compatible con Rails utilizando el plugin acts_as_xapian .

Finalmente, mi elección preferida es Sphinx usando el plugin Ultrasphinx . Es extremadamente rápido y tiene muchas opciones sobre cómo indexar y buscar en sus bases de datos, pero ya no se mantiene activamente.

Otro complemento para Sphinx es Thinking Sphinx, que tiene muchos comentarios positivos. Es un poco más fácil comenzar a utilizar Thinking Sphinx que Ultrasphinx. Sugiero que investigue ambos complementos para determinar cuál se ajusta mejor a su proyecto.