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

Sistema de busqueda por selects

Estas en el tema de Sistema de busqueda por selects en el foro de Mysql en Foros del Web. Entonces tendrás que usar un MATCH(...) AGAINST(...) por cada criterio seleccionado, con OR: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código MySQL: Ver original SELECT     name1 ,   ...

  #31 (permalink)  
Antiguo 03/01/2011, 21:45
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sistema de busqueda por selects

Entonces tendrás que usar un MATCH(...) AGAINST(...) por cada criterio seleccionado, con OR:

Código MySQL:
Ver original
  1.     name1,
  2.     name2,
  3.     name3,
  4.     name4 ,
  5.     MATCH (name1, name2, name3, name4) AGAINST ('palabras buscadas') Score
  6.     nombretutabla
  7.     MATCH (name1,name2.name3,name4) AGAINST('%$_GET['name1']%')
  8.     OR
  9.     MATCH (name1,name2.name3,name4) AGAINST('%$_GET['name2']%')
  10.     OR
  11.     MATCH (name1,name2.name3,name4) AGAINST('%$_GET['name3']%')
  12.     OR
  13.     MATCH (name1,name2.name3,name4) AGAINST('%$_GET['name4']%')
  14. ORDER BY Score
Porque debes recordar que en cada AGAINST() sólo puede haber una única cadena. Nada más.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #32 (permalink)  
Antiguo 04/01/2011, 02:42
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sistema de busqueda por selects

creo que mejor así:
Código MySQL:
Ver original
  1. SELECT     name1,     name2,     name3,     name4 ,     MATCH (name1, name2, name3, name4)
  2.  AGAINST ('palabra1 palabra2 palabra3 palabra4') Score
  3.  FROM     nombretutabla
  4.  WHERE     MATCH (name1,name2,name3,name4)
  5.  AGAINST('palabra1 palabra2 palabra3 palabra4')
  6.       ORDER BY Score
1) No olvidéis que en búsqueda natural no puede usarse ese '%' para indicar parte de cadena (como parece querer phpfan), sea la que sea, pues full-text en modo natural busca palabras completas. Si quieres buscar eso, tendrás que usar full-text en modo booleano y utilizar el asterisco para eso, y además sólo para el final de la palabra.
http://dev.mysql.com/doc/refman/5.5/...t-boolean.html
2) el propio full-text lleva implícito lo que queremos conseguir con OR. Si hay un sólo ejemplo lo encontrará.
3) La cadena la puedes conformar previamente en PHP con las palabras separadas por un espacio en blanco. No voy a escribir código PHP, pero eso es fácil.

phpfan, ¿por qué no nos proporcionas el archivo create table de tu tabla con algunos datos para insertar y hacer una búsqueda concreta? Es también posible que tengas pocos registros o que busques términos cuya frecuencia sea altísima, o que busques términos con menos de 4 caracteres. Hay una serie de restricciones para full-text, pero debemos saber lo que tienes y qué quieres buscar.

Última edición por jurena; 04/01/2011 a las 04:49
  #33 (permalink)  
Antiguo 04/01/2011, 17:37
(Desactivado)
 
Fecha de Ingreso: noviembre-2010
Ubicación: Malaga
Mensajes: 225
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Sistema de busqueda por selects

-El ejemplo de gnzsoloyo por alguna razón esta mal escrito no me debuelbe ni mysql_error.

-En cambio el de jurena no debuelbe nada de nada.

-Creo que me rindo ,soy un perdedor. :(
  #34 (permalink)  
Antiguo 04/01/2011, 20:54
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Sistema de busqueda por selects

Mi ejemplo no está mal escrito. Es para ser ejecutado en consola y no por medio de PHP.
Además, ya te demostré que estaba bien escrito desde el momento en que te estoy posteando la copia de la salida en pantalla de la ejecución de cada sentencia (ver post Nro. 16)...
A eso hay que agregar que ni siquiera es un ejemplo mío, está copiado directamente del Manual de Referencia de MySQL: 12.7. Funciones de búsqueda de texto completo (Full-Text). Yo solamente agregué dos consultas, una para mostrarte qué pasaba si no ponías nada en el parámetro del AGAINST() y otra para provocar el mismo error que te da a tí.
Si no te ha dado resultado, es simplemente porque no lo estás haciendo correctamente.

Yo que tu, más que rendirme, me pondría a estudiar en serio bases de datos y fundamentos de MySQL.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #35 (permalink)  
Antiguo 05/01/2011, 03:30
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Sistema de busqueda por selects

phpfan,
estaría bien que no proporcionaras la estructura de tu tabla y los datos que has insertado, además de palabras que querrías buscar. Seguro que podríamos ayudarte. Esto no es nada difícil, créeme, y muchas veces el problema, como te sugiere gnzsoloyo, es mezclar PHP y MySQL, que es lo que estás haciendo. Primero debes probar que funciona en la consulta. Incluso con PhPMyAdmin o algún otro gestor, si no manejas la consola, podrías hacerlo. Eso sería mejor que decirnos que no funciona sin saber qué estás haciendo. Necesitamos la estructura de tu tabla y los datos sobre los que buscas, así como los criterios que buscas. Un ejemplo del tipo: tengo estos campos en la tabla con datos como estos y quiero buscar estas palabras y que me saque estos y en este orden, pero con datos concretos. Ya verás que encontramos la solución. No te rindas, amigo.
  #36 (permalink)  
Antiguo 05/01/2011, 10:08
(Desactivado)
 
Fecha de Ingreso: noviembre-2010
Ubicación: Malaga
Mensajes: 225
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Sistema de busqueda por selects

-Por fin lo e resuelto , todo gracias al dios elseif , me invente unas de mis chapuzas y funciono como el mejor del mejor busqueda por select MISION COMPLETADA .

-Agradecimientos a los que se molestaron en ayudarme , no me sirvio pero me ayudo ya me entienden jejej .

Un abrazo , si quereis que os cuente como lo ise dejad el mensaje , que bien . viva php

Etiquetas: selects, sitemap, busquedas
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 13:54.