Foros del Web » Programando para Internet » PHP »

Busqueda Booleana

Estas en el tema de Busqueda Booleana en el foro de PHP en Foros del Web. Hola Foro tengo una pequeña aplicación en PHP en ella tengo una sección de búsqueda de personas Si yo busco a Edgar Monroy Nava, pues ...
  #1 (permalink)  
Antiguo 23/06/2006, 17:31
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Pregunta Busqueda Booleana

Hola Foro
tengo una pequeña aplicación en PHP
en ella tengo una sección de búsqueda de personas
Si yo busco a Edgar Monroy Nava, pues en el input text le pongo "Edgar", el sistema busca a todos los "Edgar", y me muestra la lista y ya puedo seleccionar a Edgar Monroy Nava ........
todo esta bien hasta ahi.
Lo que necesito ahora es hacer una búsqueda tipo booleana, para afinar mis búsquedas .... he visto que en algunos lugares hacen algo como esto:

edgar +nava -garcia

esto quiere decir que la persona quiere listar a todos los "Edgar", pero que tambien tengan "Nava" y que NO contengan "Garcia"

Me explico ??
como puedo hacer eso ???

claro! ... supongo que debo recibir toda la cadena "edgar +nava -garcia"
despues buscar si vienen caracteres como "+" "-" y separarla y hacer varias cosas ... pero quiero saber si alguien ya lo hizo y este funcionando correctamente !!!

Ayuda .. pls !!!

Saludos
  #2 (permalink)  
Antiguo 23/06/2006, 19:30
Avatar de Nefertiter  
Fecha de Ingreso: enero-2003
Ubicación: Rosario
Mensajes: 1.316
Antigüedad: 14 años, 11 meses
Puntos: 8
mira si haces tu busqueda con LIKE la sentencia es parecia mira:
edgar +nava -garcia

SELECT * FROM tabla WHERE campo LIKE '%edgar%' AND campo LIKE '%nava%' AND campo NOT LIKE '%garcia%'
  #3 (permalink)  
Antiguo 24/06/2006, 11:11
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Claro !!! asi debe ser ...
pero aqui pasa algo .... como puedo saber cuantos Like poner ???
osea .... como saber si el usuario escribe:
edgar +monroy
o
edgar -nava
o
edgar -nava -monroy +carlos
o
nava -edgar +carlos +monroy -garcia -algo

eso es realmente lo que me interesa saber ... como separar la cadena ... como saber cuentas palabras quiere buscar, como ordenarlas, cuando usar el like y el NOT like

he ahi el problema ;)

Espero recibir mas comentarios al respacto .. Saludos
  #4 (permalink)  
Antiguo 26/06/2006, 14:32
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
Holaaaaa !!!!
sigo sin saber la respuesta exacta a este rollo !!!
alguien me puede ayudar ????
  #5 (permalink)  
Antiguo 26/06/2006, 14:44
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 13 años
Puntos: 34
Tenes que hacer como base un split del texto separando por espacios. De ahí mediante foreach ver con que empieza la palabra. Si es + vas concatenando un like y limpiarla de este signo. Si es menos lo mismo pero con un not like.
A esto tenes updates como por ejemplo si pones hola+mundo-php, pero arranca con lo base, y la lógica a aplicar es la arriba expuesta, y si de esta hay algo que no sabes hacer en php comentalo y te ayudaremos.
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 26/06/2006, 17:27
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
buena opción ... lo intentaré asi !!!
Saludos
  #7 (permalink)  
Antiguo 12/07/2006, 10:49
 
Fecha de Ingreso: mayo-2002
Ubicación: Toluca
Mensajes: 229
Antigüedad: 15 años, 6 meses
Puntos: 2
pues hice que funcionara de ese modo, auqnue siempr etendré el problema con casos como este: hola+mundo-php
pero bueno .. ya veré más adelante !!!
pensé que ya existia algo que lo hacia automático
veo que muchos sotios lo tienen

al fin de cuentas Muchas gracias !!!
__________________
Gracias a Foros como este, he podido crear websites y ahora contribuyo a seguir adelante con aportaciones
www.inxenio-dixeno.com Soluciones Web
  #8 (permalink)  
Antiguo 12/07/2006, 11:14
 
Fecha de Ingreso: junio-2006
Mensajes: 87
Antigüedad: 11 años, 5 meses
Puntos: 0
Si utilizas MySQL hay por un tipo de busqueda Full text que tiene operaciones logicas como las que comentas, lo que no se como se comportará cuando se le pasan los operadores juntos, aun tengo que probarla
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 04:44.