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

¿Como hacer consultas por frase?

Estas en el tema de ¿Como hacer consultas por frase? en el foro de PostgreSQL en Foros del Web. Un saludo a todos muchachos, gracias por el espacio. Muchachos, soy algo nuevo en la parte de Base de datos y queria solicitarles orientación de ...
  #1 (permalink)  
Antiguo 29/11/2012, 16:45
Avatar de brojask  
Fecha de Ingreso: julio-2012
Mensajes: 5
Antigüedad: 11 años, 9 meses
Puntos: 0
¿Como hacer consultas por frase?

Un saludo a todos muchachos, gracias por el espacio.

Muchachos, soy algo nuevo en la parte de Base de datos y queria solicitarles orientación de como vengo haciendo las cosas.

Les comento mi situación:
Estoy realizando una búsqueda por frase en mi sitio, por el momento estoy haciendo las búsquedas por medio del: título, descripción de los temas y por medio de palabras clave que ya estan en la base de datos por medio de Wildcards (encerrando las frases con "%" ), se que no es para nada semántico y poco fiable. Por eso mi consulta, como logro mayor alcance en mis búsquedas y que sean mas semánticas?

El script con el que trabajo por ahora es el siguiente:

ANTES DE HACER LA BÚSQUEDA REMUEVO LOS ESPACIOS Y LOS REEMPLAZO CON %

$frase = str_replace(" ", "%", $frase);

Código:
SELECT 	i.codigo_investigacion, i.titulo,m.nombre AS materia,t.nombre AS tema,cast(i.fecha as date),i.path ,i.palabras_claves,i.resumen
FROM scc_investigaciones i
INNER JOIN scc_materias m ON m.codigo_materia = i.codigo_materia
INNER JOIN scc_temas t ON t.codigo_tema = i.codigo_tema
WHERE (translate(lower(i.palabras_claves), 'áéíóúñÁÉÍÓÚÑ', 'aeiounaeioun') ILIKE '%" . $frase . "%' OR translate(lower(i.titulo), 'áéíóúñÁÉÍÓÚÑ', 'aeiounaeioun') ILIKE '%" . $frase . "%') AND (i.estado <>3)
ORDER BY i.fecha DESC
Saludos muchachos!

Etiquetas: medio
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 10:42.