2010-01-31 16 views
10

Escribo mi primera aplicación Ruby on Rails y necesito implementar una característica de "búsqueda". Tendrá que buscar en la base de datos (1 columna por tabla en 3 tablas diferentes) y devolver los resultados más relevantes en cada una de las 3 categorías. Algo así como cómo hacer una búsqueda en Amazon.com que arrojará resultados de todos los departamentos.¿Implementando la búsqueda en una aplicación Ruby on Rails 3?

¿Hay alguna gema/biblioteca/técnica común en el mundo de Ruby on Rails que deba conocer (que funcione con Rails 3)? De lo contrario, ¿qué debo hacer para implementar una función de búsqueda en mi aplicación?

Respuesta

2

Probablemente necesitarías usar algún motor de búsqueda. Eche un vistazo al plugin thinking sphinx. También utilicé acts_as_ferret, pero puede causar algunos problemas.

No sé si hay un complemento que haga todo lo que quieras para ti. Me gustaría hacerlo de esta manera:

  1. Implementar la búsqueda (con SQL o con algún buscador como Sphinx etc.)
  2. A continuación, agregue un poco de materia ajax para autocompletar.

Google es su amigo: take a look here y here.

4

Creo que depende de lo "serio" que sea acerca de su búsqueda.

Si solo desea buscar en algunos campos VARCHAR simples, que haría manualmente al generar algunas afirmaciones "LIKE '% xyz%'", entonces todo lo que necesita es un complemento que lo haga por usted. Mi favorito aquí es searchlogic. Permite bastantes alcances dinámicos útiles en sus modelos, que puede encadenar juntos (como otros ámbitos). Por ejemplo, puede escribir algo como esto:

User.last_name_like("Doe").age_gt(30).age_lt(40) 

Aquí hay una great screencast sobre el uso de sus otras características.

Pero la instrucción SQL LIKE no es realmente una buena opción para buscar en grandes trozos de texto. Entonces, si eso es lo que necesita, sería mejor usar un complemento que realmente indexe sus datos.

En ese caso thinking sphinx (mencionado en otras respuestas) es una gran solución. Solo tenga en cuenta que requiere algunos pasos de instalación específicos de la plataforma y solo funciona con PostreSQL y MySQL (no funciona con el SQLite predeterminado de Rails). Usarlo tampoco es tan sencillo: debe definir qué indexar en cada modelo que desea buscar, crear el índice, iniciar Sphinx, etc.

Cuestiones relacionadas