Ver Mensaje Individual
  #12 (permalink)  
Antiguo 09/05/2013, 21:04
matake
 
Fecha de Ingreso: mayo-2013
Mensajes: 191
Antigüedad: 11 años, 6 meses
Puntos: 10
Respuesta: Excluir palabras de una consulta

Hola,

Despues de muchas horas ( de verdad muchas ) y gracias a las pistas que me habéis dado he resuelto gran parte de la siguiente forma:
(me queda todavia un problema a la linea 16 )

Código MySQL:
Ver original
  1. /* en php */       
  2. $palabras_excluidas = array("para","palabra2","palabra3"); /* se pueden añadir otras  */
  3.  
  4. $busqueda = "par"; /* tmbien vale "p" "pa" "par" "para" "pal" "pala" "palab" "palabra" "palabra2" "palabra3"
  5. o cualquier otra busqueda */
  6.    
  7. /* el sql */
  8. (
  9.     SELECT id, campo
  10.     FROM tabla
  11.     WHERE
  12.     campo REGEXP '[[:<:]]".$busqueda."'=1 /*devuelve filas que llevan palabras  que empiezan por $busqueda */
  13.     AND NOT(  /* pero no devuelve aquellas filas que contienen cualquiera de las palabras excluidas ... he puesto las palabras excluidas dentro del REGEXP con implode con separador "|" .... */
  14.         campo REGEXP '[[:<:]](".implode('|',$palabras_excluidas).")[[:>:]]' =1
  15.         AND(  /* y si $busqueda es mas pequeña que la palabra excluida pero coincide con el principio de la misma, no la considere como valida   */
  16.             campo REGEXP '[[:<:]]".$q."[a-z|0-9]{2}'=0 /* me queda una duda con {2} razon por la cual todavia no doy por resuelto el tema ... explicaciones mas abajo */
  17.         )
  18.     )
  19. )




Explico aqui lo del {2} de la linea 16 de arriba ... que todavia le falta algo

Para que la busqueda sea siempre correcta el numero dentro de las corchetes tiene que estar siempre igual a: n=count($palabra_encontrada_en_la_fila) - count($busqueda)

Alguien tiene alguna sugerencia?

Saludos

Cita:
Iniciado por gnzsoloyo
Perdona gnzsoloyo ... al estar mucho rato con la ventana de edicion de mensaje abierta sin enviarlo ... vi tu post ahora despues de enviar yo este mismo .

Pues si que el algoritmo por mucho que te parecia como solucion facil al principio cuando me recomandaste lo del CONCAT , esta bastante complicado ... sobre todo para uno como yo que no tengo ni estudios ni experiencia en esto.

Lo que me sorprende es que al final no me ha quedado tan complicado ( esto si si llego a resolver lo que he mencionado arriba ) ....

De toda manera como esta ahora esta bastante bien ( he hecho muchas pruebas y va bien ... excepto lo comentado )

De toda manera ... sin vuestras sugerencias no creo que habia avanzado nada de nada ... asi que otra vez gracias ... y felicitaciones por lo que haceis

Última edición por matake; 09/05/2013 a las 21:37