Un buscador

Hola lista, me gustaría integrar un buscador. A parte de buscar en
páginas necesito que se pueda buscar en ficheros. Hay algo por ahí que
me sirva? gracias, sobre todo me interesa que busque en ficheros, se
puede?

On 11/5/07, Miguel Angel Calleja Lázaro [email protected] wrote:

Hola lista, me gustaría integrar un buscador. A parte de buscar en
páginas necesito que se pueda buscar en ficheros. Hay algo por ahí que
me sirva? gracias, sobre todo me interesa que busque en ficheros, se puede?

Puedes montarte algo con Ferret: http://ferret.davebalmain.com/trac


Ernesto Jiménez Caballero
Software Engineer Leader
Negonation
(34) 620 475 382
[email protected]

Aquí tienes un tutorial de acts_as_ferret:

http://www.railsenvy.com/2007/2/19/acts-as-ferret-tutorial

Ferret mola pq te indexa no sólo atributos sino métodos de instancia
de los modelos! Y además ficheros PDF, DOC, etc…

Miguel Angel Calleja Lázaro wrote:

Hola lista, me gustar�a integrar un buscador. A parte de buscar en
p�ginas necesito que se pueda buscar en ficheros. Hay algo por ah� que
me sirva? gracias, sobre todo me interesa que busque en ficheros, se
puede?

En vez de programarlo, ¿por qué no te creas un Google Custom Search y lo
integras en tu web con formato Google? A nosotros nos ha dado buen
resultado en www.rankia.com

Jaime I.
escribió:

Aquí tienes un tutorial de acts_as_ferret:

http://www.railsenvy.com/2007/2/19/acts-as-ferret-tutorial

Ferret mola pq te indexa no sólo atributos sino métodos de instancia
de los modelos! Y además ficheros PDF, DOC, etc…

Muchas gracias a todos, echaré un vistazo al ferret.

Sphinx …

Un saludo,

Francesc

On Dec 1, 2007, at 12:40 AM, Jaime I. wrote:


Jaime I.
http://jaimeiniesta.com - http://railes.net


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


name. Francesc E. i Martí
voice. +34 678.681.603

En la conferencia rails me pareció oir comentar a Xavier N. que
había otro plugin para búsquedas e indexación que le gustaba más que
ferret.

Xavi! ¿Cual era?

2007/11/7, Miguel Angel Calleja Lázaro [email protected]:

Yo siempre he recomendado y utilizado ferret porque nunca me ha dado
problemas. Sin embargo he leído algunas historias de terror sobre
índices corruptos y el servidor de indexación, así que he curioseado un
poco sobre este tema.

Las dos grandes alternativas parecen las que comenta Xavier, (ambas
tienen plugins para integrarlas con Rails):

  • solr: la única pega que le veo a priori es que necesita correr sobre
    un contenedor tipo Tomcat y en algunos casos esto puede suponer un
    problema - incluso ideológico por lo visto en la conferencia :stuck_out_tongue:

  • sphinx: por lo visto es muy-muy-rápido, tanto que la gente reindexa
    periódicamente todos sus datos. Esa es la pega que le veo a primera
    vista: parece que no permite indexar al guardar un modelo y no me gusta
    la idea de reindexar la base de datos cada X minutos para ofrecer
    búsquedas actualizadas.

Tampoco tengo experiencia de primera mano, aunque creo que eso cambiará
en poco tiempo :slight_smile:


Raul M. - Freelance Web D.
http://raul.murciano.net

buenas,
justo hoy vi en el blog de Alexey Kovyrin[1] un post donde comentaba un
problema que se encontraron en un proyecto con el plugin de
acts_as_ferret y su política de bloqueos:
http://blog.kovyrin.net/2007/12/01/innodb-locks-activerecord-and-acts_as_ferret-problem/
(aunque este caso supongo que será más problema del plugin que la
librería en
sí)
[1] http://blog.kovyrin.net/

Saludos

Raul M.
escribió:> Yo siempre he recomendado y utilizado ferret porque nunca me ha dado

http://raul.murciano.net


Ror-es mailing list
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es


/**

On Dec 1, 2007, at 12:40 AM, Jaime I. wrote:

En la conferencia rails me pareció oir comentar a Xavier N. que
había otro plugin para búsquedas e indexación que le gustaba más que
ferret.

Hey Jaime! No se que palabras emplearia pero queria decir en todo caso
que habia oido buenas opiniones de solr:

Welcome to Apache Solr - Apache Solr

junto con acts_as_solr:

http://acts-as-solr.rubyforge.org/

pero no tengo experiencia de primera mano.

Por otro lado Pablo Delgado hablo maravillas de Sphinx:

http://www.sphinxsearch.com/

– fxn

¿Alguien me puede pasar códigos de ejemplo para hacer un buscador por
varios campos sin usar sphinx, ferret ni ningún otro plugin?

O sea, si tenemos por ejemplo un buscador de pisos que puede enviarnos
varios campos, rellenos o no:

params[:busqueda][:calle]
params[:busqueda][:zona]
params[:busqueda][:localidad]
params[:busqueda][:provincia]
params[:busqueda][:precio_desde]
params[:busqueda][:precio_hasta]
etc…

¿Cuál es la mejor manera de coger estos posibles campos y montar la
cadena de búsqueda? ¿Usaríais find_by_sql montando un sql a medida?

Jaime,

Acá hay otro plugin [1] que permite crear consultas dinámicas y se
utiliza
para casos como el ejemplo que vos comentas.
Espero te sirva.

[1] http://www.muermann.org/ruby/criteria_query/

2008/3/25 Jaime I. [email protected]:

alguien puede pasarme un ejemplo de una aplicacion tipo maestro detalle(
por ejemplo una factura y sus items)

gracias

El 25/03/08, Juan P. [email protected]
escribió:> Jaime,

Acá hay otro plugin [1] que permite crear consultas dinámicas y se utiliza
para casos como el ejemplo que vos comentas.
Espero te sirva.

[1] http://www.muermann.org/ruby/criteria_query/

Muchas gracias Juan P., este plugin me sirve para lo que necesito.
Además leyendo sobre él veo también cómo hacerlo sin plugins, que es
realmente lo que busco (construirme la cadena de condiciones y
parámetros sobre la marcha).

Gracias!

El 25/03/08, Juan P. [email protected]
escribió:> No hay por que, suerte.

Parece que no estoy muy lúcido hoy… Estoy intentando hacer la
búsqueda montando la cadena para las condiciones y el array de
parámetros dinámicamente…

def buscar
condiciones = “”
parametros = []

if params[:busqueda][:calle]
  condiciones << "(calle LIKE ?)"
  parametros << params[:busqueda][:calle]
end

if params[:busqueda][:zona]
  condiciones << " AND " unless condiciones.empty?
  condiciones << "(zona LIKE ?)"
  parametros << params[:busqueda][:zona]
end

@avisos = Aviso.find(:all, :conditions => [condiciones, parametros])

end

Pero me dice que

wrong number of bind variables (1 for 2) in: (calle LIKE ?) AND (zona
LIKE ?)

Parece que no se da cuenta de que parametros es un array con 2
valores… Si lo pongo así, si que funciona, claro…

@avisos = Aviso.find(:all, :conditions => [condiciones, parametros[0],
parametros[1]])

2008/3/25, Jaime I. [email protected]:

Efectivamente estoy un poco dormido hoy… find espera un hash, y no
un array como le pasaba yo. Esto si que funciona:

def buscar
condiciones = “”
parametros = {}

if params[:busqueda][:calle]
  condiciones << "(calle LIKE :calle)"
  parametros[:calle] = "%#{params[:busqueda][:calle]}%"
end

if params[:busqueda][:zona]
  condiciones << " AND " unless condiciones.empty?
  condiciones << "(zona LIKE :zona)"
  parametros[:zona] = "%#{params[:busqueda][:zona]}%"
end

@avisos = Aviso.find(:all, :conditions => [condiciones, parametros])

end

hola,

Efectivamente estoy un poco dormido hoy… find espera un hash, y no
un array como le pasaba yo. Esto si que funciona:

en realidad creo que acepta las dos, o bien la hash que has puesto, en
cuyo caso la sustitución se hace por nombre, o bien pasando un array con
primero la condición y luego los valores. En ese caso la sustitición va
por posición, que es lo que tenías en

Aviso.find(:all, :conditions => [condiciones,
parametros[0],parametros[1]])

Eso mismo lo podrías conseguir con el poco conocido splat operator[1], que
viene muy a mano a veces. Quedaría así

Aviso.find(:all, :conditions => [condiciones, *parametros])

Básicamente, en este caso el splat lo que hace es expandir el array a sus
valores inline.

De todos modos, cuando hay muchos parámetros la solución de la hash es
más robusta porque no está basada en posición y siempre queda más claro.

Saludos,

javier ramírez

[1] splat operator « format internet:

Sólo una cosita, si tienes condiciones como array de cadenas le puedes
pasar a :conditions al final condiciones.join(" AND ") y te quitas lo de
agregar " AND " en cada condición si la cadena está vacía. Esto con 2 a
lo mejor no es muy interesante, pero como tengas muchas te va a limpiar
mucho el código.

Jaime I.
escribió:> 2008/3/25, Jaime I. [email protected]:

No hay por que, suerte.

2008/3/25 Jaime I. [email protected]:

El 25/03/08, javier ramirez [email protected]
escribió:> Básicamente, en este caso el splat lo que hace es expandir el array a sus valores inline.

Splat! Encantando de conocerte.

De todos modos, cuando hay muchos parámetros la solución de la hash es
más robusta porque no está basada en posición y siempre queda más claro.

Sí, al final me quedo con el hash, que está más claro.

Gracias!