Foros del Web » Programando para Internet » PHP »

Opiñon sobre estre problema con mysql

Estas en el tema de Opiñon sobre estre problema con mysql en el foro de PHP en Foros del Web. Hola amigos, estoy haciendo un sitio webs, de letras de canciones. Por como veran, letras de cancioens hay muchas, digamos que tengo como 1.000.000. Organizadas ...
  #1 (permalink)  
Antiguo 12/07/2007, 18:09
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 6 meses
Puntos: 1
Exclamación Opiñon sobre estre problema con mysql

Hola amigos, estoy haciendo un sitio webs, de letras de canciones. Por como veran, letras de cancioens hay muchas, digamos que tengo como 1.000.000.
Organizadas de la siguiente manera: (2 tablas)
Autores
ID_INTERNO | NOMBRE


Letras
ID_INTERNO | TITULO | LETRA | ID_AUTOR


en donde ID_AUTOR correspendo a un ID_INTERNO de la tabla autores. Me explico?

AHora viene la duda, de todas las busquedas que ofrezco en mi sitio mi duda surge en cuando quiero buscar por letra, por ejemplo, quiero buscar las cancioens que tengan la siguiente frase: "eres el amor de mi vida, me lo dice mi "


Código PHP:
SELECT  
         autores
.NOMBREletras.LETRAletras.TITULOletras.ID_INTERNO 
         
MATCH (letras.LETRAAGAINST 
         
('eres el amor de mi vida, me lo dice mi corazon') AS puntuacion 
          FROM letras inner join autores on letras
.ID_AUTOR autores.ID_INTERNO 
         WHERE  MATCH 
(letras.LETRAAGAINST 
         
('eres el amor de mi vida, me lo dice mi corazon'

Ahora el problema, es que buscandolo asi, (previamente hice un indice fulltext), tarda mucho la consulta, al hacerla por 2da vez, tarde menos, pero no quiero que tarde tanto.
Que peudo hacer? Tal vez algun "Tip" en PHP o MYSQL. Ustedes que opinan?

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 12/07/2007, 19:27
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 10 meses
Puntos: 5
Re: Opiñon sobre estre problema con mysql

Hola:

Y haz probado a usar un like, no sé yo, pero podría resultar...


Hasta Luego .-
  #3 (permalink)  
Antiguo 12/07/2007, 20:07
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 6 meses
Puntos: 1
Información Re: Opiñon sobre estre problema con mysql

hola, gracias por tu respuesta pero... supuestamente al ser tantos registros y al buscar frases, es mas rapido crear un indice FULLTEXT y buscar usando match, ya que usandso like tardaria una eternidad y seria menos efectivo. SI no es asi, corriganme. Alguna otra idea?
  #4 (permalink)  
Antiguo 12/07/2007, 23:32
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Opiñon sobre estre problema con mysql

creo que tu estas del otro lado, pareces un usuario experimentado de mysql, y el retraso es por la cantidad de registros que contiene tu BD : 1,000,000, no menosprecies esa cantidad, aun con la mejor optimizacion, tu consulta tardara...
el problema es que tu estas buscando en base a texto completo... si buscases por fecha las cosas serian mas sencillas, o si buscases por autor, mucho mas sencillas, te recomendaria una estrategia muy interesante, el problema es que en este caso, la soluciuon no aplica... lastima.
  #5 (permalink)  
Antiguo 13/07/2007, 00:56
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 6 meses
Puntos: 1
Información Re: Opiñon sobre estre problema con mysql

Hola alexserver, gracias por la respuesta, No soy tan experimentado como dices, ojala, gracias por los alagos, hace 1 año que estoy en esto y es por la ayuda de este foro. Tenes razon, buscando por titulo o artista, los resultados salen rapisicimos, pero quiero ademas tener esa opcion como en la mayoria de los sitios de letras de canciones, mi duda tambien es,
¿por que la primera vez que busco, tarda muchisimo, y la 2da vez tarde casi nada?.

Se te ocurre otra idea? Desde ya muchas gracias por tu atencion,
  #6 (permalink)  
Antiguo 13/07/2007, 23:07
 
Fecha de Ingreso: junio-2007
Mensajes: 22
Antigüedad: 17 años, 5 meses
Puntos: 0
Re: Opiñon sobre estre problema con mysql

Hola gabyrsh, mira, con respecto a tu pregunta sobre porque la primera vez que realizas una busqueda tarda mas que las siguientes, es por la cache que tiene el servidor de MySQL.
Yo trabajo con una base de datos que tiene al igual que tu, millones de registros. afortunadamente para mi, pude partir las tablas en base a la fecha, teniendo una tabla por mes... aun asi, cuando intento consultar en todas las tablas (gracias a uns sistema especializado de UNION entre tables) mi servidor MySQL se tarda demasiado : es natural.
pero, al mismo tiempo que indexa y obtiene los registros, guarda en cache la cadena de busqueda y el resultado, por eso es que la segunda busqueda suele ser mas rapida. Claro, si tu cambias la sentencia SQL tan solo por unos parametros, la cache se vuelve inservible y necesita reindexar...
mira, echale un ojo a estos enlaces, aqui puedes informarte sobre esto :
http://blackshell.usebox.net/archivo/617.php
http://www.databasejournal.com/featu...le.php/3110171

Con respecto a como mejorar tu busqueda, se me ocurre una manera...
Entiendes el modelo ER ? (entidad relacion).
si lo entiendes, construye una tabla catalogo de palabaras clave, como un diccionario, y construye ademas una relacion entre las palabras clave y los registros de tus canciones.
Por ejemplo, la cancion de cielito lindo, contiene palabras clave, como "sierra" "morena", "cielito", "lindo", "canta", etc.
para evitar el crecimiento de tu catalogo, evita poner palabras verbos conjugados, es decir, en lugar de poner "juegas", "juego", "jugamos", pon solo "jugar" y no añadas enlaces a canciones que contienen verbos conjugados, en simples palabras, en tu catalogo mete unicamente nombres, verbos en su forma simple, sustantivos y adjetivos.

Primero construye tu diccionario, una vez que lo tengas entonces realiza una busqueda fulltext en tus canciones y por cada cancion y palabra coincidentes, añade un registro, uuuuuuuuuy, eso te darian posiblemente mas de 10 millones de registros... pero... partelos en tablas que contengan palabras que empiecen con una letra, luego te enseño como unirlas...
Esa es una idea, pero pueden haber mejores, pregunta en mas foros y tambien tu, analiza que seria mejor... si tienes dudas con gusto te respondo.
saludos
  #7 (permalink)  
Antiguo 14/07/2007, 00:33
 
Fecha de Ingreso: mayo-2005
Mensajes: 257
Antigüedad: 19 años, 6 meses
Puntos: 1
De acuerdo Re: Opiñon sobre estre problema con mysql

Hola ALexServer Gracias por ayudarme. Entiendo el ER ( lo estoy viendo en la universidad) ahora bien, siguiento tu propuesta, el diccionario que tendria que armar, seria algo asi como 1 palabra por registo? No es asi? Ahora, de donde saco todas las palabras para armar mi diccionario, recordemos que tengo 1.000.000 de letras de canciones aproximadamente.

Otra cosa, por ejemplo si busco por titulo o nombre de autor, la busqueda la hace rapidisima (eso nose si lo dije en el 1er post, pero por las dudas lo recuerdo.)

Me gusto la idea de las palabras claves, lo que todavia intento resolver es como armar el diccionario. Me podrias dar una manito mas, mas de lo que me has dado.

La verdad que con personas como vos, vale la pena contactarse conel foro.

Un abrazo
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 14:10.