Buenas gente, segunda vez que posteo una pregunta en la lista. Esta vez es mas puntual (creo). Estamos trabajando en un proyecto y necesitabamos hacer una busqueda de texto en la base de datos. Buscando nos encontramos con Ferret y acts_as_ferret. Siguiendo la documentacion y los tutoriales en internet tenemos el siguiente codigo:
Modelo: class Item < ActiveRecord::Base ... acts_as_ferret :fields => [:title, :description] ... end En el controller ... @items = Item.find_with_ferret params[:keyword] ... La idea es que busque el keyword (texto) en el modelo Item por los campos :title y :description. Haciendo solo eso no hemos conseguido una busqueda que arroje resultados. Hemos probado de eliminar el index que crea para que lo reconstruya pero sigue sin funcionar. En algunos caso pudimos obtener resultados, pero luego deja de andar por algun motivo raro. La cuestion es que renegamos mucho y la busqueda no anda bien, a veces funciona y a veces no. Otra cosa que no pudimos resolver bien es el tema del score. El plugin tiene dos metodos (ademas de otros) que agrega al modelo: uno es find_with_ferret y el otro find_ids_with_ferret. El primero realiza la busqueda y arroja los objetos que contienen el keyword, la otra en cambio retorna un array que contiene el modelo donde se encontro el resultado, un campo data que no sabemos que podria contener (siempre lo vimos vacio), el id del objeto y un score. Estaria interesante poder usar el score, pero vimos que mucha gente opta por realizar la busqueda con ferret de los ids, y luego buscar otra vez los ids para obtener los datos. No nos parece muy correcto realizar una doble busqueda ¿hay alguna forma de hacer que el plugin traiga el score de los resultados o los datos que nos interesan para mostrar en los resultados, sin hacer una doble busqueda? Otra cosa que vemos es que la carpeta index la crea en un solo lado. Estamos usando git en modo local y a mi compañero, al querer buscar y usar el plugin no le crea el index en su copia local, sino que usa la mia. (el repositorio y las copias locales estan en la misma maquina servidora), algo conflictivo, porque usamos base de datos separadas a fin de no generar conflictos en los archivos de sqlite entre pulls. En fin, la pregunta es ¿esta bien lo que estamos haciendo o hay que configurar mas el plugin y la gema y escribir algun codigo adicional? Nose si alguien estuvo renegando con eso. Y por otro lado ¿es bueno usar ese plugin para busqueda de texto en los modelos o hay algo mejor? Cualquier consejo ayuda. Gracias.
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
