Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » PostgreSQL »

Buscar una palabra en postgres y saber donde la encontro

Estas en el tema de Buscar una palabra en postgres y saber donde la encontro en el foro de PostgreSQL en Foros del Web. Chicos, Primera vez que me decido a escribir aqui, ya que esta vez sí que no encuentro respuesta a lo que busco. Aprovecho de decirles ...
  #1 (permalink)  
Antiguo 25/09/2008, 10:12
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Buscar una palabra en postgres y saber donde la encontro

Chicos,
Primera vez que me decido a escribir aqui, ya que esta vez sí que no encuentro respuesta a lo que busco.
Aprovecho de decirles que este foro siempre soluciona mis dudas! jeje

Bien, estoy haciendo un buscador dentro de un sitio web. Este sitio es de noticias, y el buscador, obviamente busca dentro de esas noticias.

Hago la siguiente consulta :

select * from noticias where to_ascii(titulo,'LATIN1') ilike to_ascii('%$palabras[$i]%','LATIN1') or to_ascii(bajada,'LATIN1') ilike to_ascii('%$palabras[$i]%','LATIN1') or to_ascii(texto,'LATIN1') ilike to_ascii('%$palabras[$i]%','LATIN1').

Esta consulta me trae de vuelta las noticias que contengan la palabra "x" dentro de cualquiera de sus campos. Esos campos son : Titulo, Bajada y Texto.

Hasta ahí todo perfecto.
El tema es que uno de los requerimientos del buscador es que muestre una parte del texto donde se encuentra la palabra "x".
Ej: Esta es una noticia que contiene la palabra "x" que busco (...)

Y aqui viene mi consulta:
Es posible, a través de la consulta sql, saber en cual de los tres campos encontró la palabra? Y así traer un estracto del texto donde está la palabra?


Sé que podrían haber varias soluciones, pero dandome miles de vueltas, haciendo muchos if y muchas consultas mas. Pero busco saber si hay alguna forma mas resumida.



Desde ya muchas gracias por la ayuda brindada anteriormente y la que vendrá.

Saludos
Doo
  #2 (permalink)  
Antiguo 26/09/2008, 02:13
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Buscar una palabra en postgres y saber donde la encontro

Puedes probar algo asi:

Código:
select * from (
select 	id, 
		CASE WHEN titulo ilike '%hola%' THEN titulo ELSE null END as titulo, 
		CASE WHEN noticias ilike '%hola%' THEN noticias ELSE null END as noticias,
		CASE WHEN texto ilike '%hola%' THEN texto ELSE null END as texto
from	        tabla
) foo
where foo.titulo is not null
           or foo.noticias is not null
           or foo.texto is not null
Nos cuentas.

Salu2
  #3 (permalink)  
Antiguo 26/09/2008, 02:16
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 13 años, 8 meses
Puntos: 13
Respuesta: Buscar una palabra en postgres y saber donde la encontro

Si no quieres sacar todo el campo mira las funciones substring y position para "recortar" el campo.
http://www.postgresql.org/docs/8.3/i...ns-string.html

Salu2
  #4 (permalink)  
Antiguo 26/09/2008, 07:56
 
Fecha de Ingreso: abril-2008
Mensajes: 2
Antigüedad: 12 años, 5 meses
Puntos: 0
Respuesta: Buscar una palabra en postgres y saber donde la encontro

Lo probaré y les cuento.

Gracias Seyko.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:49.