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

Consulta para MySQL -- BOOLEAN, complicada

Estas en el tema de Consulta para MySQL -- BOOLEAN, complicada en el foro de Bases de Datos General en Foros del Web. Que tal/// pues ando con esto: una tabla mysql que tiene space 1 space 2 space 3 hits ok, necesito un query que me devuelva ...
  #1 (permalink)  
Antiguo 24/04/2005, 23:17
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
Consulta para MySQL -- BOOLEAN, complicada

Que tal/// pues ando con esto:

una tabla mysql que tiene

space 1
space 2
space 3
hits

ok, necesito un query que me devuelva ordenados los resultados con estas ordenes de relavancia

1 - palabra esta en 1,2 y en 3.
2.- esta en 1,3.
3.- esta en 2,3.
4.- esta en 1
5.- esta en 2

Y si hay empate, gana el que tenga más hits.

Alguién le llega?

gracias a quien se de el tiempo de colaborar con este pibete
  #2 (permalink)  
Antiguo 25/04/2005, 08:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
mm Yo te recomendaría usar busquedas de texto completo (FULL TEXT search) .. como puedes ver en este tutorial:

http://www.mysql-hispano.org/page.php?id=15

Ese sistema de busquedas indexadas de campos de texto ya incorpora el hecho de entregar los resultados por ese criterio .. El tema de los "hits" los tendrías que trabajar aparte . .Pero todo esto principalmente en "SQL" no en PHP ... (por si tienes más dudas ... avisa y movemos el mensaje al foro de "Base de datos").

Un saludo,
  #3 (permalink)  
Antiguo 25/04/2005, 10:17
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
Lo del full-text ya lo he leido, pero no comprendo mucho como hacer el query para que haga lo que te indico.

Yo me entiendo con la parte de hits, pero alguien me podría hacer un query de ejemplo?

Gracias

George
  #4 (permalink)  
Antiguo 25/04/2005, 10:51
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

El campo de hits deveria ser separado, entonces basta con que pongas un cluster index desc sobre tu campo hits y al momento de hacer la consulta lo hara automatico, o bien un order by hits desc en tu consulta.

Suerte!!
  #5 (permalink)  
Antiguo 25/04/2005, 18:56
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
el campo de hits es lo de menos... lo que ocupo es el query para lo demás
por favor
  #6 (permalink)  
Antiguo 25/04/2005, 19:48
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
Esto realmente me urge, no tengo mucho dinero, pero le pagare USD$20 a quien me ayude a sacar este query adelante.
  #7 (permalink)  
Antiguo 25/04/2005, 20:29
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola

No creo que se trate de dinero, tampoco podemos hacer milagros, entonces si quieres mas ayuda croe que debes de poner mas informacion acerca de tu base de datos, además los consejos que te hemos puesto creo que son muy validos, pero no los has entendido, entonces relajate y tranquilo para adealnte
  #8 (permalink)  
Antiguo 25/04/2005, 20:36
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
CREATE TABLE websites (
reg int(10) NOT NULL auto_increment,
name text,
description text,
url text,
hits int(10) unsigned default NULL,
PRIMARY KEY (reg),
FULLTEXT KEY name (name),
FULLTEXT KEY description (description),
FULLTEXT KEY url (url)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  #9 (permalink)  
Antiguo 25/04/2005, 20:37
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
Comprendo tu mensaje... disculpa, es la desesperación. Necesito un query que haga esto...

The relevance are:

a = name
b = description
c = url

1 – if the keyword are in the 3 colunms a, b and c.
2 – if the keyword are ONLY in a and c.
3 – if the keyword are ONLY b and c.
4 – if the keyword are ONLY in a.
5 - if the keyword are ONLY in b.

Ok, and if we good a few registers with the same relevance, we’ll order by the “hits” DESC.
  #10 (permalink)  
Antiguo 25/04/2005, 21:08
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Exacto (y)

Ahora bien, lo que necesitas en un select, y por lo que veo en tu tabla seria como:

select * from websites
where name like '%keyword%' or description like '%keyword%' or url like '%keyword%'
order by name, decription, url, hits desc

Seria algo parecido a eso, lo malo es que no se si soporte order by campos fulltext, tal vez puedes cambiar esos cambios a usar varchar(8000), lo cual seria mas eficiente y son seguros los index correctos.

Necesitaras mirar mas opciones, pero eso es basicamente un metodo que podria funcionar, el resto lo dejarias por interpretacion de ASP, o algun metodo en bases de datos mas complicado, espero haberte ayudado un poco y suerte
  #11 (permalink)  
Antiguo 26/04/2005, 13:05
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Hola:

Creo que para categorizar tendrías que usar un lenguaje de programación, aunque podrías hacer algo así:

Código:
SELECT name AS a, description AS b, url AS c, hits, case
    WHEN (a LIKE '%keyword%' AND b LIKE '%keyword%' AND c LIKE '%keyword%') THEN 1
    WHEN (a LIKE '%keyword%' AND c LIKE '%keyword%') THEN 2
    WHEN (b LIKE '%keyword%' AND c LIKE '%keyword%') THEN 3
    WHEN (a LIKE '%keyword%') THEN 4
    WHEN (b LIKE '%keyword%') THEN 5
    WHEN (c LIKE '%keyword%') THEN 6
    ELSE 7
    END AS categoria FROM websites ORDER BY hits DESC
Ya cuando haces el query, recibirías un campo extra que se llama "categoria" con un número dependiendo del caso que se dé.

En mi cabeza funciona, pero a veces mi cabeza funciona mal

SALUDOS
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #12 (permalink)  
Antiguo 26/04/2005, 13:07
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
mil gracias a todos. ya lo he conseguido.
  #13 (permalink)  
Antiguo 26/04/2005, 15:26
Avatar de Neuron_376  
Fecha de Ingreso: abril-2005
Mensajes: 1.051
Antigüedad: 19 años, 1 mes
Puntos: 2
Hola.

Que bueno, como lo hiciste al final, como quedo tu consulta ?
  #14 (permalink)  
Antiguo 26/04/2005, 15:27
 
Fecha de Ingreso: abril-2005
Mensajes: 10
Antigüedad: 19 años
Puntos: 0
como kidd sugirio. un poco de trabajo, pero quedo perfecto
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 18:26.