Foros del Web » Programando para Internet » PHP »

usar varios criterios en busqueda

Estas en el tema de usar varios criterios en busqueda en el foro de PHP en Foros del Web. Hola, tengo una base de datos y programe un buscador que al teclear una palabra en un formulario me muestra todos los registros que contengan ...
  #1 (permalink)  
Antiguo 19/04/2006, 11:22
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
usar varios criterios en busqueda

Hola, tengo una base de datos y programe un buscador que al teclear una palabra en un formulario me muestra todos los registros que contengan esa palabra, el codigo que uso es:
Código PHP:
$pegar "SELECT * FROM propiedades WHERE ubicacion LIKE '%$palabra%' OR  comodidades LIKE '%$palabra%' OR  precio LIKE '%$palabra%' OR  codigo LIKE '%$palabra%' LIMIT $inicial,$cantidad"
Mi problema es que en el campo comodidades de tipo varchar con longitud 200, tiene mucha informacion y me gustaria que en el formulario de busqueda al poner mas de una palabra tenga en cuenta las dos, es decir que si cualquiera pone dos palabras en el buscador, muestre todos los registros que tenga esas 2 palabras, si pone 3 que se cumpla esos tres

¿hay alguna forma?

gracias
  #2 (permalink)  
Antiguo 19/04/2006, 11:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Lo ideal sería que usases busquedas tipo "FULL text search" (o busquedas de texto completo). (supongo que usas Mysql? .. )

Un tutorial al respecto:
http://www.mysql-hispano.org/page.php?id=15

Tiene su pequeño inconveniente .. no acepta palabras a buscar de menos de 3 caracteres .. pero si eso no es relevante en tu sistema .. es una excelente opción (óptima por lo demás pues se indexan esos campos y demás historias para facilitar las busquedas).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 19/04/2006, 13:11
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por Cluster
Tiene su pequeño inconveniente .. no acepta palabras a buscar de menos de 3 caracteres ..
Cluster, Sabrás de algunas técnicas o trucos que bajo arreglos php o sentencias SQL o combinaciones de ambas se pueda hacer sacar esas palabras de tres letras en las consultas tipo FULL TEXT...

¿ALGO? - ¿Cualquier Cosa? - ¿Carta bajo la manga? ¿Cualquier altimaña?

Venditas 3 Letras!

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #4 (permalink)  
Antiguo 19/04/2006, 13:21
Avatar de pereztroff  
Fecha de Ingreso: junio-2002
Ubicación: En la Internet.
Mensajes: 4.068
Antigüedad: 15 años, 6 meses
Puntos: 5
gracias Cluster.
Se me olvido comentar que tengo la base de datos mysql con mas de 300 registros ¿algun incoveniente porque ya este todo creado y con datos? temo que se pierdan

Última edición por pereztroff; 19/04/2006 a las 13:28
  #5 (permalink)  
Antiguo 19/04/2006, 13:30
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por pereztroff
gracias Cluster.
Se me olvido comentar que tengo la base de datos mysql con mas de 300 registros ¿algun incoveniente porque ya este todo creado y con datos? temo que se pierdan
mm .. En principio no tendría que tener problemas para camibiar el tipo de indice a uno de "texto completo". Lo que hace ese proceso es crear indices .. nada más. De todas formas como siempre, hazte cópia de seguridad y haz tus pruebas. (Yo no lo he usado con una BBDD ya creada).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 19/04/2006, 13:32
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Las busquedas "FULL TEXT" son así .. tienen ese límite de caracteres en la busquedas en "pró" de facilidad de uso y consumo de recursos (a la hora de generar esos indices que usan ..).

Lo que podrías hacer es vía PHP detectar que en tu cadena de busqueda tienes palabras de menos de 3 caracteres y tratar la busqueda en SQL simple tipo:

SELECT * FROM tabla WHERE campo LIKE '%$palabra%'

e ir componiendo tu sentencia SQL a base de "OR" y bloques "LIKE" como palabras de 3 caracteres tengas. El lío será cuando tengas palabras de menos de 3 caracteres junto con alguna de más caracteres: ¿buscas primero en "full text"? y luego por los términos de menos de 3 caracteres para unificar los resultados? .. podría ser.

Un saludo,
Cluster en un post anterior me explicaste eso...
ok.- lo aplique. pero los resultados a mi pensar y observación eran pocos éticos.- con respecto a cuando se daba una búsqueda full text.-

por ejemplo una de los detalles mas notable era cuando organizaba los resultados dependiendo de un "AS score" en la búsqueda, en donde obviamente entrarían en juego todas las palabras con mas frecuencia en los resultados de búsqueda, tenia que incluir todas las palabras ya sean de 3 letras o cuantas letras fueran...en fin

será que hay otras formas de romper moderadamente esas reglas de 3 letras, "o no romperlas" pero si empatarle el juego al MySQL vía arreglos php.-?

¿ALGO? - ¿Cualquier Cosa? - ¿Carta bajo la manga? ¿Cualquier altimaña?

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #7 (permalink)  
Antiguo 19/04/2006, 13:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por xyyy7
Cluster, Sabrás de algunas técnicas o trucos que bajo arreglos php o sentencias SQL o combinaciones de ambas se pueda hacer sacar esas palabras de tres letras en las consultas tipo FULL TEXT...

¿ALGO? - ¿Cualquier Cosa? - ¿Carta bajo la manga? ¿Cualquier altimaña?

Venditas 3 Letras!

Saludos.-
Yo lo único que conozco es la técnica de generar esa sentencia SQL a base de grupos de "campo LIKE $dato" + Operador (AND/OR) vía PHP. No es tan "óptimo" como una busqueda en "texto completo" (por ejemplo te quedas sin la opción de "relevancia" para hacer ordenamientos por n° de ocurrencias de la palabra en el campo(s) que buscas).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 19/04/2006, 13:41
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por Cluster
(por ejemplo te quedas sin la opción de "relevancia" para hacer ordenamientos por n° de ocurrencias de la palabra en el campo(s) que buscas).
a eso mismo me referia en mi post anterior a este.-

Venditas palabras de tres letras jejejej!

Gracias

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #9 (permalink)  
Antiguo 04/09/2006, 17:04
Avatar de xyyy7  
Fecha de Ingreso: enero-2004
Ubicación: Maracay.-
Mensajes: 637
Antigüedad: 13 años, 10 meses
Puntos: 5
Cita:
Iniciado por Cluster Ver Mensaje
Lo ideal sería que usases busquedas tipo "FULL text search" (o busquedas de texto completo). (supongo que usas Mysql? .. )

Un tutorial al respecto:
http://www.mysql-hispano.org/page.php?id=15

Tiene su pequeño inconveniente .. no acepta palabras a buscar de menos de 3 caracteres .. pero si eso no es relevante en tu sistema .. es una excelente opción (óptima por lo demás pues se indexan esos campos y demás historias para facilitar las busquedas).

Un saludo,
Hey amigo... si se usara asi como lo estas describiendo MySQL tipo de busqueda FULL TEXT...

¿Hasta cuantos caracteres o cuantas palabras se podrian aplicar a este tipo de busqueda?

osea me explico...
Cita:
$buscar = "palabra1 palabra2 palabra3 palabra4 palabra5 palabra6";
bueno hay tenemos 6 palabas y 53 caracteres... pero hasta cuanto soporta este tipo de busqueda?

Saludos.-
__________________
Maracay Edo Aragua - Venezuela :
Mi Favorita :
http://www.MySQL.Com
  #10 (permalink)  
Antiguo 05/09/2006, 07:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por xyyy7 Ver Mensaje
Hey amigo... si se usara asi como lo estas describiendo MySQL tipo de busqueda FULL TEXT...

¿Hasta cuantos caracteres o cuantas palabras se podrian aplicar a este tipo de busqueda?

osea me explico...

bueno hay tenemos 6 palabas y 53 caracteres... pero hasta cuanto soporta este tipo de busqueda?

Saludos.-
Por mi parte desconozco los límites superiores o en total .. sólo sé que el limite inferior está en palabras de menos de 3 caracteres.

Podrías consultar en el foro de Base de datos -> Mysql a ver si te resuelven la duda (y/o ver la documentación oficial de Myql al respecto).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 03:30.