2012/5/17 Antonio Jesus Rodriguez <
ajesus...@gmail.com>:
> Hola.
>
> He conseguido hacer una nube de tags como esta siguiendo este tutorial.
>
> El problema es que el autor solo llega hasta la parte de crearla, pero luego
> no puedes hacer click en cada tag y ver todas las entradas de blog que
> contengan ese tag. ¿Cómo puedo hacer esto?.
>
Crea una query con LIKE y % como comodín:
SELECT p FROM Posts p WHERE a.tags LIKE '%gato%'
Eso te buscaría todos los registros que tengan la palabra gato en
algún lado de su campo tags.
El problema es que sí tienes un tag gato y otro tag purgatorio, al
buscar te encontraría los dos. Para eso lo mejor es incluir el
separador en la búsqueda, así si usas '%,gato ,%' solo te devuelve los
que utilizan ese tag. Eso te da otro problema, que no te encontraría
el primer ni el último tag (ya que no tienen comas adelante ni atrás
respectivamente). Para evitar este problema, al guardar los tags,
deberías añadirle el separador adelante y atrás, y ya que estas en
eso, quitar el espacio del separador.
Por ejemplo si usas | como separador, guardarlos como
"|gato|hamburguesa|queso|" y en la búsqueda usar LIKE '%|gato|%'.
Esto te da también el efecto de que puedes filtrar tags. Por ejemplo
LIKE '%|gato|%' AND NOT LIKE LIKE '%|perro|%' encontraría los posts
con el tag gato que no tienen el tag perro.
Lo que no sé, es que tan rápido pueda ser esto. Si usaras otra entidad
Tags con una relación muchos a uno hacia los Post, podrías indexar los
tags y realizar búsquedas más rápidas, pero pierdes la habilidad del
filtro.
Si haces las pruebas nos lo comentas ;)
Saludos
--
A menudo unas pocas horas de "Prueba y error" podrán ahorrarte minutos
de leer manuales.